📅  最后修改于: 2023-12-03 15:39:49.877000             🧑  作者: Mango
在 PHP 中,排序是常见的操作之一。手动排序一个数组可以用 sort()
和 rsort()
函数,它们分别按升序和降序排序。
$numbers = array(4, 2, 8, 6);
sort($numbers);
print_r($numbers);
rsort($numbers);
print_r($numbers);
输出:
Array
(
[0] => 2
[1] => 4
[2] => 6
[3] => 8
)
Array
(
[0] => 8
[1] => 6
[2] => 4
[3] => 2
)
如果需要按数组中的多个维度进行排序,可以使用 array_multisort()
函数。以下代码按 last_name
、first_name
和 age
排序一个多维数组。
$people = array(
array('last_name' => 'Doe', 'first_name' => 'John', 'age' => 43),
array('last_name' => 'Smith', 'first_name' => 'Mary', 'age' => 27),
array('last_name' => 'Johnson', 'first_name' => 'Linda', 'age' => 50)
);
// 按 last_name 升序,如果相同则按照 first_name 升序,如果相同则按照 age 升序
foreach ($people as $key => $row) {
$last_name[$key] = $row['last_name'];
$first_name[$key] = $row['first_name'];
$age[$key] = $row['age'];
}
array_multisort($last_name, SORT_ASC, $first_name, SORT_ASC, $age, SORT_ASC, $people);
print_r($people);
输出:
Array
(
[0] => Array
(
[last_name] => Doe
[first_name] => John
[age] => 43
)
[1] => Array
(
[last_name] => Johnson
[first_name] => Linda
[age] => 50
)
[2] => Array
(
[last_name] => Smith
[first_name] => Mary
[age] => 27
)
)
如果需要按照自定义规则进行排序,可以实现 usort()
函数的自定义比较函数。以下代码按照字符串长度排序一个数组。
$words = array('dog', 'apple', 'bat');
usort($words, function($a, $b) {
return strlen($a) - strlen($b);
});
print_r($words);
输出:
Array
(
[0] => dog
[1] => bat
[2] => apple
)
在自定义比较函数中,如果返回负数,则表示 $a
排在 $b
前面,如果返回正数,则表示 $a
排在 $b
后面,如果返回 0,则表示它们相等。
这是一个简单的介绍,如果需要更详细的信息,请查看 PHP 官方文档。