数组是一种复合数据,可以装下多个值,每个值用不同的键来区分。 $arr=array('001'=>'春','002'=>'夏','003'=>'秋','004'=>'冬'); 索引数组的键由纯数字组成,没有特殊意义 如:$arr=array('0'=>'春','1'=>'夏','2'=>'秋','3'=>'冬'); 关联数组的键由字符串组成,一般能体现单元的内容 如:$arr=array('name'=>'yyj','age'=>'20'); 多维数组 如:$arr=array('name'=>'yyj','bag'=>array('yuwen','shuxue')) 键的声明规则 如果不声明键会从0,1,2,3....递增来生成键。 如果已存在1个或几个数字键,则从最大的数字键来递增生成数字键 如果键声明重复了,则后面的值覆盖前面的值。 键可以是整数,也可以是字符串。 如果是浮点数则转换为整数,如果字符串的值恰好是整数,则也理解为整数。 循环遍历数组 foreach($arr as $g){$a=$g['name']} EX:使用foreach将下列数组的值变为原来的2倍 $arr=array('zhangsan'=>'3','lisi'=>'6','wangwu'=>'10'); foreach($arr as $key=>$v){$arr[$key]=2*$v;}print_r($arr); Array ( [zhangsan] => 6 [lisi] => 12 [wangwu] => 20 ) each($arr)将指针指向的单元信息组成一个数组并将指针后移一位,数组有四个单元。具体如下: Array ( [1] => 单元值 [value] => 单元值 [0] => 键值 [key] => 键值 ) list($a,$b,$c)=$arr;list是重合赋值语句:在list中按逗号隔开的顺序从左到右分别对应右侧数组色0,1,2,3 若对应的键不存在则为null。新组成的数组顺序从右往左排列数组游标 current():当前游标所在的数组单元的值 next():将游标往下移一位 prev():将游标往前移一位 end():将游标移到最后 数组相关常用函数 array_key_exists($key, $arr)用来判断数组中的键是否存在 in_array($values,$arr)检查数组中是否存在某个值 count($arr,1)计算数组中的单元数目或对象中的属性个数, 若第二个参数不写则默认为0无法识别递归,只计算一维数组个数, 若设置为1则递归地对数组计数。对计算多维数组的所有单元尤其有用。 例如: $arr=array(5,4,array(5,4,5),array(858,'fg',788)); echo count($arr); echo count($arr,1); 4 10 array_change_key_case($arr,[CASE_UPPER(大写)\CASE_LOWER(小写,默认值)]) 用来返回字符串键名全为小写或大写的数组,第二个参数不写则默认为小写 如果一个数组中的多个键名经过本函数后变成一样的话(例如 'keY' 和 'kEY'),最后一个值将覆盖其它的值 array_count_values($arr)用来统计数组中所有的值出现的次数 $arr= array(1, 'hello', 1, 'world', 'hello'); print_r(array_count_values($arr)); Array ( [1] => 2 [hello] => 2 [world] => 1 ) array_unique($arr)移除数组中重复的值,若字符串旳值和整形的值相同则认为是重复的 print_r(array_unique($arr)) Array ( [0] => 1 [1] => hello [3] => world ) array_values($arr)返回 数组中所有的值并给其建立数字索引 array_keys($arr,['values'])返回数组中所有的键名,若设置了values则只返回values的键名 array_search('values',$arr)在数组中搜索给定的值,如果成功则返回相应的键名,若存在多个相同的值则返回第一个。 array_fill(start_index,num,'values')用 value 参数的值将一个数组填充 num 个条目,键名由 start_index 参数指定的开始。 $a=array_fill(-2,5,'yyj'); Array ( [-2] => yyj [0] => yyj [1] => yyj [2] => yyj [3] => yyj ) array_flip($arr)交换数组中的键和值。如果同一个值出现了多次,则最后一个键名将作为它的值,所有其它的都丢失了 array_sum($arr)将数组中的所有值的和以整数或浮点数的结果返回 array_push($arr,'values','values')将一个或多个单元压入数组的末尾(入栈)并返回数组长度 array_pop($arr)将数组最后一个单元弹出(出栈)。返回弹出的值,使用此函数后会重置(reset())array 指针 array_shift($arr)将数组开头的单元移出数组。返回弹出的值,使用此函数后会重置(reset())array 指针 array_unshift($arr,'values','values')在数组开头插入一个或多个单元并返回数组长度 数组排序 sort($arr,[详见手册])对数组排序,第二个参数不写则按字母排序,并给其建立数字索引 rsort($arr,[sort])对数组逆向排序,第二个参数不写则按字母排序,并给其建立数字索引 asort($arr,[sort])对数组排序,第二个参数不写则按字母排序,并且单元的索引关系不变。 ksort($arr,[sort])对数组按照键名排序,第二个参数不写则按字母排序 usort($arr,'函数名')使用用户自定义的比较函数对数组中的值进行排序 natsort($arr)用自然排序算法对数组排序 ,并且单元的索引关系不变。 natcasesort($arr)用自然排序算法对数组进行不区分大小写字母的排序 ,并且单元的索引关系不变。 array_merge($arr,$arr)合并一个或多个数组 如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。 然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。数字键名将会被重新编号! 如果你想完全保留原有数组并只想新的数组附加到后面,用 + 运算符:$result = $array1 + $array2; array_merge_recursive($arr,$arr)递归地合并一个或多个数组 array_diff($arr,$arr)计算数组的差集,返回在 array1 中但是不在 array2 及任何其它参数数组中的值。注意键名保留不变 array_diff_assoc($arr,$arr)带索引检查计算数组的差集。 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。 注意:和 array_diff() 不同的是键名也用于比较。 array_intersect($arr,$arr)计算数组的交集。 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意:键名保留不变。 array_intersect_assoc($arr,$arr)带索引检查计算数组的差集。 返回一个数组,该数组包括了所有在 array1 中也同时出现在所有其它参数数组中的值。 注意:和 array_intersect() 不同的是键名也用于比较。 range(序列的第一个值,序列结束于的值,单元之间的步进值如果未指定则默认为 1)建立一个包含指定范围单元的数组 range(0,100,10)=array(0,10,20,30,40,50,60,70,80,90,100) range('a','d')=array('a','b','c','d') range('c','a')=array('c','b','a') array_reverse($arr)返回一个单元顺序相反的数组 array_rand($arr,num)从数组中随机取出一个或多个单元 shuffle($arr)将数组打乱会影响原数组 |
|