php sort实现
PHP 数组排序实现方法
PHP 提供了多种内置函数来实现数组排序,根据需求可以选择不同的排序方式。以下是常见的排序函数及其用法:
sort() - 对数组进行升序排序
该函数对数组的值进行升序排序,并重新分配数字索引(适用于索引数组)。
$fruits = array("lemon", "orange", "banana", "apple");
sort($fruits);
print_r($fruits);
rsort() - 对数组进行降序排序
与 sort() 类似,但按降序排列数组元素。
$numbers = array(4, 6, 2, 22, 11);
rsort($numbers);
print_r($numbers);
asort() - 保持索引关联的升序排序
对数组进行升序排序,但保持键值关联(适用于关联数组)。
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
asort($age);
print_r($age);
arsort() - 保持索引关联的降序排序
与 asort() 类似,但按降序排列数组元素。
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
arsort($age);
print_r($age);
ksort() - 按键名升序排序
根据键名对关联数组进行升序排序。
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
ksort($age);
print_r($age);
krsort() - 按键名降序排序
根据键名对关联数组进行降序排序。
$age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
krsort($age);
print_r($age);
usort() - 使用用户自定义比较函数排序
当需要自定义排序逻辑时,可以使用 usort() 并提供一个比较函数。
function cmp($a, $b) {
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
$array = array(3, 2, 5, 6, 1);
usort($array, "cmp");
print_r($array);
natsort() - 自然顺序排序
按照自然顺序对数组排序(如同人类习惯的排序方式)。
$files = array("img12.png", "img10.png", "img2.png", "img1.png");
natsort($files);
print_r($files);
多维数组排序
对于多维数组排序,可以使用 array_multisort() 或结合 usort() 实现。
$data = array(
array('name' => 'John', 'age' => 28),
array('name' => 'Alice', 'age' => 23),
array('name' => 'Bob', 'age' => 25)
);
// 按 age 升序排序
usort($data, function($a, $b) {
return $a['age'] - $b['age'];
});
print_r($data);
这些函数覆盖了 PHP 中大多数常见的排序需求,选择哪种方法取决于具体的数据结构和排序要求。







