php sort实现
PHP 数组排序方法
PHP 提供了多种内置函数对数组进行排序,根据排序需求和数组类型选择合适的方法。
按值升序排序
使用 sort() 函数对数组按值升序排序,会重新索引数字键名:
$numbers = [4, 2, 8, 6];
sort($numbers);
print_r($numbers); // 输出: Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 )
按值降序排序
使用 rsort() 函数实现按值降序排序:
$fruits = ["apple", "orange", "banana"];
rsort($fruits);
print_r($fruits); // 输出: Array ( [0] => orange [1] => banana [2] => apple )
按键升序排序
ksort() 保持键值关联并按键名升序排列:

$age = ["Peter"=>35, "Ben"=>37, "Joe"=>43];
ksort($age);
print_r($age); // 输出: Array ( [Ben] => 37 [Joe] => 43 [Peter] => 35 )
按键降序排序
krsort() 实现按键名降序排列:
$cars = ["BMW"=>5, "Audi"=>10, "Mercedes"=>8];
krsort($cars);
print_r($cars); // 输出: Array ( [Mercedes] => 8 [BMW] => 5 [Audi] => 10 )
自定义排序
usort() 允许使用自定义比较函数:
function compareLength($a, $b) {
return strlen($a) - strlen($b);
}
$words = ["apple", "fig", "banana"];
usort($words, "compareLength");
print_r($words); // 输出: Array ( [0] => fig [1] => apple [2] => banana )
多维数组排序
对多维数组按特定字段排序:

$users = [
["name" => "John", "age" => 25],
["name" => "Alice", "age" => 22]
];
usort($users, function($a, $b) {
return $a['age'] - $b['age'];
});
print_r($users); // 按年龄升序排列
保持键值关联排序
asort() 和 arsort() 在排序时保持键值关联:
$prices = ["bread" => 2.5, "milk" => 1.8];
asort($prices); // 按值升序保持键
print_r($prices); // 输出: Array ( [milk] => 1.8 [bread] => 2.5 )
自然排序
natsort() 按自然顺序处理包含数字的字符串:
$files = ["img12.png", "img10.png", "img2.png"];
natsort($files);
print_r($files); // 输出: Array ( [2] => img2.png [1] => img10.png [0] => img12.png )
随机排序
shuffle() 对数组元素进行随机排序:
$cards = ["A", "K", "Q", "J"];
shuffle($cards);
print_r($cards); // 每次输出顺序随机
以上方法覆盖了 PHP 中常见的数组排序需求,根据具体场景选择适当函数即可实现有效排序。






