php数组排序需据需求选函数:sort()升序重排索引数组并重置键;asort()按值升序保留关联数组键名;ksort()按键名升序排列;usort()支持自定义比较逻辑;array_multisort()可对多维数组指定列排序。

如果PHP中需要对数组元素进行重新排列,以满足特定顺序要求,则需根据数据类型、排序方向及键值保留需求选择合适的内置函数。以下是多种数组排序方法的具体操作步骤:
一、使用sort()对索引数组升序排序
sort()函数对数组值进行升序排列,并重新分配数字索引,适用于纯数值或字符串组成的索引数组,不保留原始键名。
1、定义一个索引数组,例如 $arr = [3, 1, 4, 1, 5];
2、调用 sort($arr);
立即学习“PHP免费学习笔记(深入)”;
3、打印结果:print_r($arr); 输出为 Array ( [0] => 1 [1] => 1 [2] => 3 [3] => 4 [4] => 5 )
注意:该函数会修改原数组且不返回新数组,同时丢弃原有键名
二、使用asort()对关联数组按值升序排序
asort()在保持键值对应关系的前提下,按数组值升序排列,适用于需要保留键名的关联数组。
1、定义关联数组,例如 $arr = ['c' => 3, 'a' => 1, 'b' => 2];
2、调用 asort($arr);
3、打印结果:print_r($arr); 输出为 Array ( [a] => 1 [b] => 2 [c] => 3 )
注意:键名与对应值的映射关系始终不变,仅调整内部顺序
三、使用ksort()对关联数组按键升序排序
ksort()依据键名(字符串或数字)进行升序排列,值随键一起移动,适合需按字母或数字键名组织数据的场景。
1、定义关联数组,例如 $arr = ['zebra' => 10, 'apple' => 5, 'banana' => 8];
2、调用 ksort($arr);
3、打印结果:print_r($arr); 输出为 Array ( [apple] => 5 [banana] => 8 [zebra] => 10 )
注意:键名比较默认区分大小写,大写字母排在小写字母之前
四、使用usort()自定义比较逻辑排序
usort()允许传入用户定义的比较函数,支持复杂排序规则,如多字段、对象属性、逆序、忽略大小写等。
1、定义数组,例如 $arr = ['Apple', 'banana', 'Cherry'];
2、编写比较函数:function compareIgnoreCase($a, $b) { return strcasecmp($a, $b); }
3、调用 usort($arr, 'compareIgnoreCase');
4、打印结果:print_r($arr); 输出为 Array ( [0] => Apple [1] => banana [2] => Cherry )
注意:比较函数必须返回负数、零或正数,分别表示小于、等于、大于关系
五、使用array_multisort()对多维数组按指定列排序
array_multisort()可同步排序多个数组,或对多维数组中的某一列作为主键进行排序,常用于二维数组按某字段统一排序。
1、定义二维数组,例如 $data = [['name' => 'Tom', 'age' => 25], ['name' => 'Jane', 'age' => 22]];
2、提取年龄列:$ages = array_column($data, 'age');
3、调用 array_multisort($ages, SORT_ASC, $data);
4、打印 $data,可见子数组按 age 升序重排
注意:array_column() 需 PHP 5.5.0+,且 array_multisort() 会直接修改原数组











