PHP最全笔记(值得收藏,不时翻看一下)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP最全笔记(值得收藏,不时翻看一下)相关的知识,希望对你有一定的参考价值。
/* 【数组函数】 *///统计计算
count 计算数组中的单元数目或对象中的属性个数
array_count_values 统计数组中所有的值出现的次数
array_product 计算数组中所有值的乘积
array_sum 计算数组中所有值的和
range 建立一个包含指定范围单元的数组array_chunk 将一个数组分割成多个
array array_chunk(array $input, int $size[, bool $preserve_keys]) array_filter 用回调函数过滤数组中的单元array_slice 从数组中取出一段
array array_slice($arr, $offset [,$len [,$preserve_keys]])array_keys 返回数组中所有的键名
array array_keys(array $input[, mixed $search_value[, bool $strict]] )
如果指定了可选参数 search_value,则只返回该值的键名。否则input数组中的所有键名都会被返回。array_values 返回数组中所有的值,并建立数字索引
array_merge合并一个或多个数组
一个数组中的值附加在前一个数组的后面。
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。
如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。array_merge_recursive 递归地合并一个或多个数组
//搜索
in_array 检查数组中是否存在某个值
bool in_array(mixed $needle, array $haystack[, bool$strict])array_key_exists 检查给定的键名或索引是否存在于数组中
isset()对于数组中为NULL的值不会返回TRUE,而 array_key_exists()会array_search 在数组中搜索给定的值,如果成功则返回相应的键名
array_combine 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
如果两个数组的单元数不同或者数组为空时返回FALSE。array_rand 从数组中随机取出一个或多个单元,返回键名或键名组成的数组,下标是自然排序的
array_fill 用给定的值填充数组
array_fill($start, $num, $value)array_flip 交换数组中的键和值array_pad 用值将数组填补到指定长度array_reverse 返回一个单元顺序相反的数组array_unique 移除数组中重复的值array_splice 把数组中的一部分去掉并用其它值取代
implode 将数组元素值用某个字符串连接成字符串explode($delimiter,$str [,$limit]) //使用一个字符串分割另一个字符串
$delimiter不能为空字符串""
array_map 将回调函数作用到给定数组的单元上,只能处理元素值,可以处理多个数组
如果callback参数设为null,则合并多个数组为一个多维数组
array_walk 对数组中的每个成员应用用户函数,只能处理一个数组,键和值均可处理,与foreach功能相同
bool array_walk ( array &$array , callback $funcname [, mixed $userdata ] )
//栈:
后进先出入栈和出栈会重新分配索引下标array_push 将一个或多个单元压入数组的末尾(入栈)array_pop 将数组最后一个单元弹出(出栈) 使用此函数后会重置(reset())array 指针。
//队列:
先进先出队列函数会重新分配索引下标array_unshift 在数组开头插入一个或多个单元array_shift 将数组开头的单元移出数组 使用此函数后会重置(reset())array 指针。
//排序函数
sort 对数组排序rsort 对数组逆向排序asort 对数组进行排序并保持索引关系arsort 对数组进行逆向排序并保持索引关系ksort 对数组按照键名排序krsort 对数组按照键名逆向排序usort 使用用户自定义的比较函数对数组中的值进行排序uksort 使用用户自定义的比较函数对数组中的键名进行排序uasort 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联natsort 用用“自然排序”算法对数组排序natcasesort 用“自然排序”算法对数组进行不区分大小写字母的排序array_multisort 对多个数组或多维数组进行排序shuffle 将数组打乱
引用传递参数,返回bool值。
重新赋予索引键名,删除原有键名
//差集
array_udiff_assoc 带索引检查计算数组的差集,用回调函数比较数据array_udiff_uassoc 带索引检查计算数组的差集,用回调函数比较数据和索引array_udiff 用回调函数比较数据来计算数组的差集array_diff_assoc 带索引检查计算数组的差集
array_diff_key 使用键名比较计算数组的差集array_diff_uassoc 用用户提供的回调函数做索引检查来计算数组的差集
array_diff_ukey 用回调函数对键名比较计算数组的差集array_diff 计算数组的差集//交集array_intersect_assoc 带索引检查计算数组的交集
array_intersect_key 使用键名比较计算数组的交集array_intersect_uassoc 带索引检查计算数组的交集,用回调函数比较索引
array_intersect_ukey 用回调函数比较键名来计算数组的交集array_intersect 计算数组的交集array_key_exists 用回调函数比较键名来计算数组的交集array_uintersect_assoc 带索引检查计算数组的交集,用回调函数比较数据array_uintersect 计算数组的交集,用回调函数比较数据
extract($arr [,$type [,$prefix]]) 从数组中将变量导入到当前的符号表(接受结合数组$arr作为参数并将键名当作变量名,值作为变量的值)compact($var [,...]) 建立一个数组,包括变量名和它们的值(变量名成为键名而变量的内容成为该键的值)
/* 【伪类型】 */
mixed 说明一个参数可以接受多种不同的(但并不必须是所有的)类型。number 说明一个参数可以是 integer 或者 float。callback 回调函数
void void作为返回类型意味着函数的返回值是无用的。
void作为参数列表意味着函数不接受任何参数。
/* 【数据库操作】 */
#连接认证mysql_connect 连接并认证数据库#发送SQL语句,接收执行结果mysql_query 发送SQL语句
仅对select, show, explain, describe语句执行成功返回一个资源标识符,其他语句成功返回true。执行失败均返回false。#处理结果mysql_fetch_assoc 从结果集中取得一行作为关联数组
每次只取回一条,类似each
结果集中记录指针mysql_fetch_row 从结果集中取得一行作为枚举数组mysql_fetch_array 从结果集中取得一行作为关联数组,或数字数组,或二者兼有
array mysql_fetch_array ( resource $result [, int $ result_type ] )
可选参数result_type可选值为:MYSQL_ASSOC,MYSQL_NUM 和 MYSQL_BOTH(默认)mysql_free_result 释放结果内存#关闭链接mysql_close 关闭连接
/* 【类和对象】 */
# 成员: 类成员:类常量、静态属性、静态方法
对象成员:非静态属性、非静态方法
# 除此外,类不能包含任何其他东西!!!
# 类名、方法名、属性名均不区分大小写
# $this代表本对象,self代表本类,parent代表父类
# 类和函数均可被事先编译(仅作为最外层时)
# 类的定义必须在单一的php区块内,不能被多个PHP标签分割
// 构造方法
- 具有构造函数的类会在每次创建新对象时先调用此方法
void __construct([ mixed $args [, $... ]] )- 构造方法所需参数由new实例化对象时,给类增加参数值。- 构造方法也可以被手动调用。- 5.3.3版本以前,支持于类名同名的方法作为构造方法。- 两种冲突时,__construct 优先
// 析构方法
- 析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。
void __destruct( void )# 作用:释放对象所占用的资源
# 调用的时机
- 脚本结束时所有资源均被释放,包括对象
- 手动删除对象时
- 保存对象的变量被赋予新值时(任何值,包括null)
- 在使用exit()终止脚本运行时也会被调用
// 静态成员(static关键字)
- 声明类成员或方法为static,就可以不实例化类而直接访问。
- 静态成员(属性或方法)均属于类,故不能通过$this或->访问。
- 静态成员是所有对象共享,属于类。
- 静态成员用类调用,非静态成员用对象调用。# 静态属性
- 静态属性不可以由对象通过->操作符来访问。
- 静态属性只能被初始化为一个字符值或一个常量,不能使用表达式。 所以你可以把静态属性初始化为整型或数组,但不能指向另一个变量或函数返回值,也不能指向一个对象。# 静态方法
- 由于静态方法不需要通过对象即可调用,所以伪变量$this在静态方法中不可用。
- 用::方式调用一个非静态方法会导致一个E_STRICT级别的错误。
// 访问解析操作符(::)
- 可以用于访问静态成员、方法和常量,还可以用于覆盖类中的成员和方法。
- 当在类的外部访问这些静态成员、方法和常量时,必须使用类的名字。
- self 和 parent 这两个特殊的关键字是用于在类的内部对成员或方法进行访问的。
// 访问辨析
- 对象成员,内部通过$this指定,外部通过对象名指定,均用->访问,访问属性时不需加$。
对象名->属性名 对象名->方法名() $this->属性名 $this->方法名()- 类成员,内部通过self或parent指定,外部通过类名指定,均用::访问,访问属性时需加$。
类名::$属性名 类名::方法名() self::$属性名 self::方法名()- 特殊:也可以通过对象访问类成员。(不建议)
对象名::$类属性名 $this::$类属性名 对象名::$类方法名() $this::类方法名()# 对象成员访问用->,类成员访问用::
- 无论是静态方法还是非静态方法,均可通过类或对象进行访问。- 静态属性通过类访问,静态方法通过对象访问。- 只有使用对象调用非静态方法时,$this才可以使用!- 静态方法不可使用$this。- 类可以调用对象方法,但注意方法内不能有$this。- 非静态方法可以调用静态属性或静态方法,反之不可以。
// 类常量
- 常量的值将始终保持不变。- 在定义和使用常量的时候不需要使用$符号。- 常量的值必须是一个定值,不能是变量,类属性或其它操作(如函数调用)的结果。# 定义:const 常量名 = 常量值;
- 不需要加public等访问修饰限定符- 类常量属于类,使用类访问,类名::类常量 或 self::类常量
// 自动加载对象
- 在试图使用尚未被定义的类时自动调用 __autoload 函数- 自动加载使用到的类名文件(根据类名找相应名称的文件,故需类名与类文件名一致)- 每个需要加载类的文件都需要存在__autoload函数-将__autoload函数写入单独的文件,每个需要用到类的文件再require该函数文件- __autoload 参数是类名function __autoload($class_name) {
require_once $_SERVER["DOCUMENT_ROOT"] . "/class/$class_name.php";
}
// $_SERVER["DOCUMENT_ROOT"] 当前运行脚本所在的文档根目录
- 可以通过类名,来推导出类所在的文件名!- 如果一个项目存在多个自动加载函数时,定义一个可以完成加载的普通函数,并在函数之前使用spl_autoload_register注册该函数。# spl_autoload_register
- 注册__autoload()函数
bool spl_autoload_register ([ callback $autoload_function ] )- 可以注册多个自动加载函数,先注册的先执行- 一旦注册自动加载函数,__autoload就失效。- 注册函数时,参数为函数名(注意加引号);注册方法时,参数为数组# 注册类或对象的方法为自动加载方法时,参数需为数组:
spl_autoload_register(array(__CLASS__, ‘__autoload‘));
__CLASS__表示当前类名,若是对象可用$this,详细见手册
以上是关于PHP最全笔记(值得收藏,不时翻看一下)的主要内容,如果未能解决你的问题,请参考以下文章