分享

php数组简介

 yyj的编程之路 2016-06-06
数组是一种复合数据,可以装下多个值,每个值用不同的键来区分。
$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)将数组打乱会影响原数组

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多