PHP数组的相关处理函数2
一、排序数组
1.简单数组排序
sort()/rsort()
从小到大/从大到小
<span style="font-size:18px;"><?php $arr=array(2,47,7,3,45,23); sort($arr); print_r ($arr);//Array( [0] => 2 [1] => 3 [2] => 7 [3] => 23 [4] => 45 [5] => 47)</span>
2.根据键名对数组排序
ksort()/krsort()
<span style="font-size:18px;"><?php $arr=array("d"=>2,"c"=>47,"f"=>7,"o"=>3,"x"=>45,"e"=>23); ksort($arr); print_r ($arr);//Array( [c] => 47 [d] => 2 [e] => 23 [f] => 7 [o] => 3 [x] => 45)</span>
3.根据元素的值对数组排序
asort()/arsort()
<span style="font-size:18px;"><?php $arr=array("d"=>2,"c"=>47,"f"=>7,"o"=>3,"x"=>45,"e"=>23); asort($arr); print_r ($arr);//Array( [d] => 2 [o] => 3 [f] => 7 [e] => 23 [x] => 45 [c] => 47)</span>
4.根据“自然排序”法对数组排序
hatsort()
和人们通常对字母数字字符串进行排序的方法一样的排序算法并保持原有键/值的关联
hatcasesort()
用“自然排序”算法对数组进行不区分大小写字母的排序
<span style="font-size:18px;"><?php $arr=array("d"=>2,"c"=>47,"f"=>7,"o"=>3,"x"=>45,"e"=>23); natsort($arr); print_r ($arr);//Array( [d] => 2 [o] => 3 [f] => 7 [e] => 23 [x] => 45 [c] => 47)</span>
5.根据用户自定义规则对数组排序
usort()
使用用户自定义的比较函数对数组中的值进行排序
uasort()
使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
uksrt()
使用用户自定义的比较函数对数组中的键名进行排序
二、拆分、合并、分解、接合的数组函数
1.array_slice(a,b,c,d)
取出一段数组
a是要操作的数组,b是起始位置,为正则是从下标b开始,为负则是距离末端-b位开始,c是取几位,没有则是默认取到末尾,d选true则是保留原索引,默认是重置索引
<span style="font-size:18px;"><?php $arr=array(2,4,5,7,1); print_r (array_slice($arr,2,1));//Array( [0] => 5) print_r (array_slice($arr,0,3));//Array( [0] => 2 [1] => 4 [2] => 5) print_r (array_slice($arr,-3,2));//Array( [0] => 5 [1] => 7) print_r (array_slice($arr,2,1,true));//Array( [2] => 5)</span>
2.array_splice(a,b,c,d)
删除一段数组或用其他数据取代
用法同上,d是可选参数,指替换的参数
<span style="font-size:18px;"><?php $arr=array(2,4,5,7,1); print_r (array_splice($arr,2,1,8)); print_r ($arr); //Array( [0] => 5)Array( [0] => 2 [1] => 4 [2] => 8 [3] => 7 [4] => 1)</span>
3.array_combine()
通过合并两个数组产生新的数组,一个数组做键,一个数组做值,故个数要对应
<span style="font-size:18px;"><?php $arr=array(2,4,5,7,1); $ar=array("a","b","c","d","e"); print_r (array_combine($arr,$ar));//Array( [2] => a [4] => b [5] => c [7] => d [1] => e)</span>
4.array_merge(a,b)
两个数组合并,数组b在a的后面,键重置,如果有相同的字符串键名,则后者值覆盖前者
<span style="font-size:18px;"><?php $arr=array(2,4,5,7,"app"=>1); $ar=array("a","b","app"=>"c","d","e"); print_r (array_merge($arr,$ar)); //Array( [0] => 2 [1] => 4 [2] => 5 [3] => 7 [app] => c [4] => a [5] => b [6] => d [7] => e) </span>
5.array_intersect()
返回两个数组的交际,键名不变
<span style="font-size:18px;"><?php $arr=array(2,4,5,7,"app"=>1); $ar=array("a","b","c",4,"e"); print_r (array_intersect($arr,$ar));//Array( [1] => 4)</span>
6.array_diff(a,b)
返回一个数组,在a中不在b中的键值
<span style="font-size:18px;"><?php $arr=array(2,4,5,7,"app"=>1); $ar=array("a","b","c",4,"e"); print_r (array_diff($arr,$ar)) //Array( [0] => 2 [2] => 5 [3] => 7 [app] => 1)</span>
三、数组与数据结构的函数
栈:后进先出
入栈:array_push(a,b)
将一个或多个单元压入到栈尾,a是数组b是值
作用相当于$arr[]=,如果用 array_push() 来给数组增加一个单元,还不如用 $array[] = ,因为这样没有调用函数的额外负担。
出栈:array_pop
弹出并返回数组的最后一个单元
<span style="font-size:18px;"><?php $arr=array(2,4,5,7); print_r (array_pop($arr));//7 </span>
array_unshift()
在数组开头插入一个或多个单元
array_shift()
将数组开头的单元移出数组
销毁指定的变量。
四、其他与数据操作有关的函数
1.array_rand(a,b)
随机去一条或多条组成一个新的数组
<span style="font-size:18px;"><?php $arr=array(2,4,5,7); print_r (array_rand($arr,2));//Array( [0] => 0 [1] => 1)</span>
2.shuffle()
将数组打乱成一个新的数组
<span style="font-size:18px;"><?php $arr=array(2,4,5,7); shuffle($arr); print_r($arr);//Array( [0] => 4 [1] => 2 [2] => 5 [3] => 7) </span>
3.array_sum()
计算数组中所有值的和
<span style="font-size:18px;"><?php $arr=array(2,4,5,7); echo array_sum($arr);//18</span>
4.range(a,b,c)
生成一组包含指定范围的数组
a是初始值,b是结束值,c是步进值
<span style="font-size:18px;"><?php $arr=range(2,10,3); print_r ($arr); //Array( [0] => 2 [1] => 5 [2] => 8) </span>
- 上一篇: PHP程序开发之一维数组排序
- 下一篇: Unity3D-代码中动态设置Material参数