php排序实现
数组排序
PHP提供了多种内置函数用于数组排序,适用于不同需求。sort()函数对数组进行升序排序,并重新索引键名:
$numbers = [4, 2, 8, 6];
sort($numbers);
print_r($numbers); // 输出: Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 )
rsort()实现降序排序,同样会重置键名:
rsort($numbers);
print_r($numbers); // 输出: Array ( [0] => 8 [1] => 6 [2] => 4 [3] => 2 )
关联数组排序需使用asort()(保持键值关联升序)或arsort()(降序):
$age = ["Peter"=>35, "Ben"=>37, "Joe"=>43];
asort($age);
print_r($age); // 输出: Array ( [Peter] => 35 [Ben] => 37 [Joe] => 43 )
自定义排序
通过usort()可实现自定义比较逻辑。以下示例按字符串长度排序:
function cmp($a, $b) {
return strlen($a) - strlen($b);
}
$words = ["apple", "banana", "cherry"];
usort($words, "cmp");
print_r($words); // 输出: Array ( [0] => apple [1] => cherry [2] => banana )
对多维数组排序时,需指定比较字段:
$users = [
['name' => 'Tom', 'age' => 28],
['name' => 'Alice', 'age' => 22]
];
usort($users, function($a, $b) {
return $a['age'] - $b['age'];
});
键名排序
ksort()和krsort()分别按键名升序和降序排列:
$fruits = ["d"=>"lemon", "a"=>"orange", "b"=>"banana"];
ksort($fruits);
print_r($fruits); // 输出: Array ( [a] => orange [b] => banana [d] => lemon )
自然排序
natsort()采用自然顺序算法,适合含数字的字符串:
$files = ["img12.png", "img10.png", "img2.png"];
natsort($files);
print_r($files); // 输出: Array ( [2] => img2.png [1] => img10.png [0] => img12.png )
多数组排序
array_multisort()可同时对多个数组排序。以下示例先按$age排序,再同步调整$name顺序:
$name = ["Tom", "Alice", "Bob"];
$age = [28, 22, 25];
array_multisort($age, $name);
print_r($name); // 输出: Array ( [0] => Alice [1] => Bob [2] => Tom )






