php实现排序
PHP 实现排序的方法
PHP 提供了多种排序方法,包括内置函数和自定义排序算法。以下是一些常见的排序实现方式:
使用内置排序函数
PHP 提供了多种内置函数用于数组排序,适用于不同的排序需求:
sort() - 对数组进行升序排序,重新索引键名(适用于索引数组)rsort() - 对数组进行降序排序,重新索引键名asort() - 对关联数组按值升序排序,保持键值关联arsort() - 对关联数组按值降序排序,保持键值关联ksort() - 对数组按键名升序排序krsort() - 对数组按键名降序排序usort() - 使用用户自定义的比较函数对数组中的值排序
示例代码:

$numbers = [4, 2, 8, 6];
sort($numbers); // 升序排序
print_r($numbers);
$ages = ["Peter"=>35, "Ben"=>37, "Joe"=>43];
asort($ages); // 按值升序排序,保持键名
print_r($ages);
自定义排序算法
对于需要特定排序逻辑的情况,可以手动实现排序算法:
冒泡排序实现

function bubbleSort($array) {
$n = count($array);
for ($i = 0; $i < $n; $i++) {
for ($j = 0; $j < $n - $i - 1; $j++) {
if ($array[$j] > $array[$j+1]) {
$temp = $array[$j];
$array[$j] = $array[$j+1];
$array[$j+1] = $temp;
}
}
}
return $array;
}
$sorted = bubbleSort([64, 34, 25, 12, 22, 11, 90]);
print_r($sorted);
快速排序实现
function quickSort($array) {
if (count($array) <= 1) {
return $array;
}
$pivot = $array[0];
$left = $right = [];
for ($i = 1; $i < count($array); $i++) {
if ($array[$i] < $pivot) {
$left[] = $array[$i];
} else {
$right[] = $array[$i];
}
}
return array_merge(quickSort($left), [$pivot], quickSort($right));
}
$sorted = quickSort([10, 5, 2, 3]);
print_r($sorted);
多维数组排序
对于多维数组,可以使用 array_multisort() 或自定义比较函数:
$users = [
['name' => 'Tom', 'age' => 30],
['name' => 'Ann', 'age' => 25],
['name' => 'Bob', 'age' => 35]
];
// 按age字段排序
usort($users, function($a, $b) {
return $a['age'] <=> $b['age'];
});
print_r($users);
对象排序
对对象数组排序可以使用 usort() 配合自定义比较函数:
class User {
public $name;
public $age;
public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
}
$users = [
new User('Tom', 30),
new User('Ann', 25),
new User('Bob', 35)
];
usort($users, function($a, $b) {
return $a->age <=> $b->age;
});
print_r($users);
以上方法涵盖了 PHP 中常见的排序需求,从简单到复杂的排序场景均可适用。






