/* 【数组函数】 */
//统计计算
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检查数组中是否存在某个值
boolin_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功能相同
boolarray_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从结果集中取得一行作为关联数组,或数字数组,或二者兼有
arraymysql_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,详细见手册