php sort 实现
排序函数的基本使用
PHP提供了多种内置排序函数,适用于不同场景:
sort():对数组进行升序排序,重新索引键名(适用于索引数组)。rsort():对数组进行降序排序,重新索引键名。asort():对关联数组按值升序排序,保留键名。arsort():对关联数组按值降序排序,保留键名。ksort():对数组按键名升序排序。krsort():对数组按键名降序排序。
示例代码:

$numbers = [3, 1, 4, 2];
sort($numbers); // 输出:[1, 2, 3, 4]
自定义排序逻辑
通过 usort()、uasort() 或 uksort() 实现自定义排序规则,需提供回调函数:

$users = [
['name' => 'Alice', 'age' => 25],
['name' => 'Bob', 'age' => 20]
];
usort($users, function($a, $b) {
return $a['age'] <=> $b['age']; // 按年龄升序
});
自然排序
natsort() 和 natcasesort() 处理包含数字的字符串时更符合自然阅读顺序:
$files = ['img1.png', 'img10.png', 'img2.png'];
natsort($files); // 输出:['img1.png', 'img2.png', 'img10.png']
多维数组排序
结合 array_column() 和 array_multisort() 实现:
$data = [
['name' => 'Alice', 'score' => 90],
['name' => 'Bob', 'score' => 80]
];
array_multisort(array_column($data, 'score'), SORT_DESC, $data);
注意事项
- 排序函数直接修改原数组,而非返回新数组。
- 对关联数组使用
sort()会丢失键名,需改用asort()。 - 自定义排序回调应返回整数(-1、0、1),使用
<=>运算符可简化比较逻辑。






