php 实现排序
PHP 实现数组排序的方法
PHP 提供了多种内置函数用于数组排序,根据需求可以选择不同的排序方式。
常用排序函数
sort()- 对数组进行升序排序(重新索引数字键)rsort()- 对数组进行降序排序(重新索引数字键)asort()- 对数组进行升序排序(保持键值关联)arsort()- 对数组进行降序排序(保持键值关联)ksort()- 按照键名升序排序krsort()- 按照键名降序排序
基本排序示例
$numbers = [4, 2, 8, 6];
sort($numbers); // 升序排序
print_r($numbers); // 输出: Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 )
保持键值关联的排序

$ages = ["Peter"=>35, "Ben"=>37, "Joe"=>43];
asort($ages); // 按值升序排序并保持键值关联
print_r($ages); // 输出: Array ( [Peter] => 35 [Ben] => 37 [Joe] => 43 )
自定义排序
使用 usort()、uasort() 或 uksort() 可以实现自定义排序逻辑。
function customSort($a, $b) {
return $a <=> $b; // 太空船运算符,PHP7+ 支持
}
$array = [3, 1, 4, 2];
usort($array, "customSort");
print_r($array); // 输出: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 )
多维数组排序

$users = [
["name" => "John", "age" => 25],
["name" => "Alice", "age" => 22],
["name" => "Bob", "age" => 30]
];
usort($users, function($a, $b) {
return $a['age'] <=> $b['age'];
});
print_r($users);
// 输出按年龄升序排序的多维数组
自然排序
对于包含数字的字符串,可以使用自然排序算法:
$files = ["img12.png", "img10.png", "img2.png", "img1.png"];
natsort($files);
print_r($files);
// 输出: Array ( [3] => img1.png [2] => img2.png [1] => img10.png [0] => img12.png )
注意事项
- 排序函数会直接修改原数组,而不是返回排序后的副本
- 对于大型数组,选择合适的排序算法很重要
- 自定义排序函数应返回整数(负、零或正)来表示比较结果






