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() - 对数组进行降序排序
与 sort() 类似,但按降序排列。
$fruits = ["apple", "orange", "banana"];
rsort($fruits);
print_r($fruits);
// 输出: Array ( [0] => orange [1] => banana [2] => apple )
asort() - 保持键值关联的升序排序
适用于关联数组,保持键与值的对应关系。
$age = ["Peter"=>35, "Ben"=>37, "Joe"=>43];
asort($age);
print_r($age);
// 输出: Array ( [Peter] => 35 [Ben] => 37 [Joe] => 43 )
ksort() - 按键名升序排序
根据键名对数组进行排序,保留键值关联。
$capital = ["France"=>"Paris", "Germany"=>"Berlin", "England"=>"London"];
ksort($capital);
print_r($capital);
// 输出: Array ( [England] => London [France] => Paris [Germany] => Berlin )
usort() - 自定义比较函数排序
通过用户定义的比较函数实现复杂排序逻辑。
function cmp($a, $b) {
if ($a == $b) return 0;
return ($a < $b) ? -1 : 1;
}
$array = [3, 2, 5, 6, 1];
usort($array, "cmp");
print_r($array);
// 输出: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 5 [4] => 6 )
多维数组排序
使用 array_multisort() 处理多维数组。

$data = [
['volume' => 67, 'edition' => 2],
['volume' => 86, 'edition' => 1],
['volume' => 85, 'edition' => 6]
];
$volumes = array_column($data, 'volume');
array_multisort($volumes, SORT_ASC, $data);
print_r($data);
// 按volume升序排列
注意事项
- 排序函数会直接修改原数组,而非返回新数组
- 关联数组使用 asort()/ksort() 可保留键值关系
- 对中文字符排序需考虑编码问题,可能需要 mbstring 扩展
- 大数据量排序时,不同算法性能差异明显
这些方法覆盖了PHP中大多数排序需求,选择合适函数取决于具体数据结构(索引数组/关联数组)和排序目标(按键/按值,升序/降序)。






