PHP常用数组函数2
数组的排序函数
根据ASCII编码进行排序
? 会一个一个比较字符的ASCII编码进行排序,比如按从升序(从小到大)排,10会排在2前面,因为计算机认识‘’10‘’是两个字符,“1”和“0”,而他们的ASCII编码都比2小,所以10会排在2前面。
sort(),对数组排序(升序),直接改变原数组,成功返true。
rsort(),对数组逆向排序(降序),直接改变原数组,成功返true。
- sort()和rsort()的升降序只针对数组的键值,且不会保留原来的索引,关联数组将变为索引数组。
asort(),对数组的值进行排序并且保持索引(升序),直接改变原数组,成功返true。
arsort(),对数组的值进行排序并且保持索引(降序),直接改变原数组,成功返true。
- 与sort()和rsort()不同的是,这两个排序后会保留原来索引。
ksort(),对数组的键排序(升序),直接改变原数组,成功返true。
krsort(),对数组的键逆向排序(降序),直接改变原数组,成功返true。
- ksort()和krsort()的升降序只针对数组的键名,键值将随着键名排序。
"自然算法"算法排序
? 根据人为的日常排序方式来排序,1,2,3...100。
natsort(),用 "自然排序" 算法排序(升序),会保留索引,直接改变原数组,成功返回true。
natcasesort(),用 "自然排序" 算法排序(升序),忽略大小写,会保留索引,直接改变原数组,成功返回true。
拆分 合并 分解 结合数组操作
array_slice(),从数组取出一段值,返回一个数组,原数组不会被改变。
$arr = [10,20,30,40,50]; // array_slice(目标数组,开始的索引,取出的个数) $res = array_slice($arr, 1, 3); //第三个选填,默认从开始索引取到尾 var_dump($res); var_dump($arr);
索引位置可为负数,-1表示从倒数第一个开始,没有-0,
$arr = [10,20,30,40,50]; $res = array_slice($arr, -3, 3); //相当于array_slice($arr, -3, -1); //从左往右,倒数第三个取到倒数第一个 var_dump($res); var_dump($arr);
array_splice() ,把数组的一部分去除,同时支持替换内容,去除后原数组类容将改改变。
$arr = [10,20,30,40,50]; $res = array_splice($arr, 0, 3); //从索引0开始往后截取三位。 var_dump($res); var_dump($arr);
$arr = [10,20,30,40,50]; $res = array_splice($arr, 2, 3, [1,4,5,7,8]); //从索引2开始往后截取三位 //再从原来的索引2开始补上1,4,5,7,8五个数 var_dump($res); var_dump($arr);
array_combine() 创建一个新数组用一个数组的值左为键名, 另一个数组的值作为值
$keys = [1,23,4,5,6]; $values = [23,123,432,2];PHP $new_arr = array_combine($keys, $values);
array_merge() 合并数组, 两个或多个,如果键名相同,则覆盖。
array_intersect() 计算数组之间的交集
$res = array_intersect($arr1, $arr2); //把数组1和数组2交集部分以数组形式赋值给$res //以$arr1为参考
array_diff() 计算数组之间的差集,以第一个参数为参考。
其他函数
array_rand() 随机从数组中取出一个键名。取字需要写多一步$数组[键名]。
shuffle() 将数组键值打乱,键名将被以乱后的结果按顺序重置。成功返true。
array_sum() 将数组内的值全部相加,并将结果返回。
range() 生成指定范围的数组。
$arr = range(0,9); //生成0-9,并把值作为数组返回给$arr
$arr = range(0,9,2) //按2位2位ASCII编码从0开始往后到9。 //这里即0,2,4,6,8
相关推荐
spinachcqb 2020-07-27
zhaowj00 2020-06-26
zhouyuqi 2020-06-13
寻常白昼 2020-06-13
有梦就能实现 2020-06-05
fujuan000 2020-05-31
Nicolase 2020-05-30
清风徐来水波不兴 2020-05-28
stefan0 2020-04-22
doupoo 2020-05-04
清风徐来水波不兴 2020-04-17
缘起宇轩阁 2020-01-31
amberom 2019-11-02
xcguoyu 2019-10-29
hebiwtc 2019-06-24
CoderLiu 2019-09-12