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

相关推荐