php自己实现sort
PHP 自定义排序实现
在 PHP 中,可以通过多种方式实现自定义排序。以下是几种常见的方法:
使用 usort 函数
usort 函数允许通过自定义的比较函数对数组进行排序。比较函数需要返回一个整数,表示两个元素的相对顺序。
$array = [3, 1, 4, 1, 5, 9, 2, 6];
usort($array, function($a, $b) {
if ($a == $b) return 0;
return ($a < $b) ? -1 : 1;
});
print_r($array);
冒泡排序实现
冒泡排序是一种简单的排序算法,可以通过嵌套循环实现。
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;
}
$sortedArray = bubbleSort([3, 1, 4, 1, 5, 9, 2, 6]);
print_r($sortedArray);
快速排序实现
快速排序是一种高效的排序算法,采用分治策略。
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));
}
$sortedArray = quickSort([3, 1, 4, 1, 5, 9, 2, 6]);
print_r($sortedArray);
对象数组排序
当需要对对象数组按照某个属性排序时,可以使用 usort 配合对象属性访问。
class User {
public $name;
public $age;
public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
}
$users = [
new User('Alice', 25),
new User('Bob', 20),
new User('Charlie', 30)
];
usort($users, function($a, $b) {
return $a->age - $b->age;
});
print_r($users);
多维数组排序
对于多维数组,可以指定排序的键名。

$data = [
['name' => 'Alice', 'score' => 90],
['name' => 'Bob', 'score' => 85],
['name' => 'Charlie', 'score' => 95]
];
usort($data, function($a, $b) {
return $a['score'] - $b['score'];
});
print_r($data);
以上方法涵盖了 PHP 中实现自定义排序的常见场景,可以根据具体需求选择合适的方式。






