php排序实现
PHP 数组排序方法
PHP 提供了多种内置函数用于数组排序,可根据需求选择不同的排序方式。以下为常用排序函数及示例:
sort()
对数组进行升序排序,键名会被重新索引:
$numbers = [4, 2, 8, 6];
sort($numbers);
print_r($numbers); // 输出 [2, 4, 6, 8]
rsort()
对数组进行降序排序,键名会被重新索引:
$fruits = ["apple", "banana", "cherry"];
rsort($fruits);
print_r($fruits); // 输出 ["cherry", "banana", "apple"]
asort()
保持键值关联的升序排序:
$ages = ["Peter" => 35, "John" => 28];
asort($ages);
print_r($ages); // 输出 ["John" => 28, "Peter" => 35]
ksort()
根据键名升序排序:
$colors = ["c" => "red", "a" => "green"];
ksort($colors);
print_r($colors); // 输出 ["a" => "green", "c" => "red"]
自定义排序
usort()
通过用户自定义函数排序(不保留键名):
function cmp($a, $b) {
return $a <=> $b; // 太空船运算符简化比较
}
$array = [3, 1, 4];
usort($array, "cmp");
print_r($array); // 输出 [1, 3, 4]
uasort()
保留键名的自定义排序:
function length_sort($a, $b) {
return strlen($a) <=> strlen($b);
}
$words = ["dog", "elephant", "cat"];
uasort($words, "length_sort");
print_r($words); // 输出 ["dog", "cat", "elephant"]
多维数组排序
使用 array_multisort() 处理多维数组:
$data = [
["name" => "John", "age" => 25],
["name" => "Alice", "age" => 22]
];
$ages = array_column($data, 'age');
array_multisort($ages, SORT_ASC, $data);
print_r($data); // 按 age 升序排列
性能注意事项
- 对于大型数组(>10,000 元素),
usort()可能较慢,建议考虑数据库排序 - 排序函数会直接修改原数组,非返回新数组
- 关联数组排序需明确选择
asort()或ksort()







