📜  排序 - PHP (1)

📅  最后修改于: 2023-12-03 14:54:42.219000             🧑  作者: Mango

排序 - PHP

排序是计算机科学中非常重要的一种算法,它可以将一个乱序的数据集合按照一定规则重新排列,使得数据有着更好的可读性和可操作性。在 PHP 中,我们常常需要对数组进行排序。

数组排序函数

PHP 中提供了以下几种数组排序函数:

sort()

sort() 函数可以按照升序重新排列数组中的元素,键名不变。

<?php
$cars = array("Volvo", "BMW", "Toyota");
sort($cars);

foreach ($cars as $car) {
  echo $car . "<br>";
}
?>

输出:

BMW
Toyota
Volvo
rsort()

rsort() 函数可以按照降序重新排列数组中的元素,键名不变。

<?php
$cars = array("Volvo", "BMW", "Toyota");
rsort($cars);

foreach ($cars as $car) {
  echo $car . "<br>";
}
?>

输出:

Volvo
Toyota
BMW
asort()

asort() 函数可以按照升序重新排列数组中的元素,同时保留键名。

<?php
$cars = array("Volvo" => 2, "BMW" => 1, "Toyota" => 3);
asort($cars);

foreach ($cars as $car => $value) {
  echo $car . " - " . $value . "<br>";
}
?>

输出:

BMW - 1
Volvo - 2
Toyota - 3
arsort()

arsort() 函数可以按照降序重新排列数组中的元素,同时保留键名。

<?php
$cars = array("Volvo" => 2, "BMW" => 1, "Toyota" => 3);
arsort($cars);

foreach ($cars as $car => $value) {
  echo $car . " - " . $value . "<br>";
}
?>

输出:

Toyota - 3
Volvo - 2
BMW - 1
ksort()

ksort() 函数可以按照升序重新排列数组中的元素,同时按照键名排序。

<?php
$cars = array("Volvo" => 2, "BMW" => 1, "Toyota" => 3);
ksort($cars);

foreach ($cars as $car => $value) {
  echo $car . " - " . $value . "<br>";
}
?>

输出:

BMW - 1
Toyota - 3
Volvo - 2
krsort()

krsort() 函数可以按照降序重新排列数组中的元素,同时按照键名排序。

<?php
$cars = array("Volvo" => 2, "BMW" => 1, "Toyota" => 3);
krsort($cars);

foreach ($cars as $car => $value) {
  echo $car . " - " . $value . "<br>";
}
?>

输出:

Volvo - 2
Toyota - 3
BMW - 1
自定义排序

如果默认的排序方式不能满足我们的需求,我们可以使用自定义排序函数对数组进行排序。

自定义排序函数需要返回一个整数值作为比较结果,其规定如下:

  • 如果 $a < $b,则返回一个小于 0 的整数;
  • 如果 $a = $b,则返回 0;
  • 如果 $a > $b,则返回一个大于 0 的整数。

例如,我们有一个存储了多个人姓名和年龄的数组:

$people = array(
  "Peter" => "35",
  "Ben" => "37",
  "Joe" => "43"
);

如果我们想要按照年龄升序排序,则可以使用以下自定义排序函数:

function sortByAge($a, $b) {
  return $a - $b;
}

使用 usort() 函数调用自定义排序函数:

usort($people, "sortByAge");

排序后的数组:

Array
(
    [Peter] => 35
    [Ben] => 37
    [Joe] => 43
)
总结

以上就是 PHP 中的数组排序函数和自定义排序方式的使用方法,掌握好这些常用的排序函数,能够让我们更加高效地处理数组数据。