📅  最后修改于: 2023-12-03 15:33:30.748000             🧑  作者: Mango
排序数组是 Web 开发中常见的任务之一,特别是在需要对数据进行分析和比较时。PHP 提供了多种函数来对数组进行排序,可以根据元素的值或键对其进行排序。在这篇文章中,我们将讨论如何对 PHP 数组按照指定的键排序。
PHP 的 usort() 函数可用于对数组进行排序,该函数的详细用法如下:
usort(array &$array, callable $comparator): bool
该函数的第一个参数为待排序的数组,第二个参数为用于比较两个值的函数。该函数应返回一个整数值,如果第一个参数小于第二个参数,则返回一个负数,反之则返回一个正数。如果两个值相等,则返回 0。
下面是一个例子:
// 定义一个关联数组
$people = [
['name' => 'John', 'age' => 23],
['name' => 'Jane', 'age' => 19],
['name' => 'Mark', 'age' => 30]
];
// 按照 'age' 键值升序排序
usort($people, function($a, $b) {
return $a['age'] - $b['age'];
});
// 打印排序结果
print_r($people);
上面的代码将按照 'age' 键值将 $people 数组排序。结果如下:
Array
(
[0] => Array
(
[name] => Jane
[age] => 19
)
[1] => Array
(
[name] => John
[age] => 23
)
[2] => Array
(
[name] => Mark
[age] => 30
)
)
array_multisort() 函数可用于对多个数组进行排序,该函数的详细用法如下:
array_multisort(array &$array1, mixed $array1_sort_order = SORT_ASC, mixed $array1_sort_flags = SORT_REGULAR, ...array &$array2): bool
该函数的第一个参数为待排序的数组,第二个参数为排序方式(默认为升序),第三个参数为排序类型(默认为普通排序)。后面可以传入多个数组,以便对 $array1 中的元素进行排序,并用相同的顺序对所有其他数组中的元素排序。返回值为布尔值,指示操作是否成功。
下面是一个例子:
// 定义两个数组
$names = ['John', 'Jane', 'Mark'];
$ages = [23, 19, 30];
// 按照 $ages 数组升序排序 $names 数组
array_multisort($ages, SORT_ASC, SORT_NUMERIC, $names);
// 打印排序结果
print_r($names);
print_r($ages);
上面的代码将按照 $ages 数组升序排序 $names 数组。结果如下:
Array
(
[0] => Jane
[1] => John
[2] => Mark
)
Array
(
[0] => 19
[1] => 23
[2] => 30
)
以上就是 PHP 中按照指定键对数组排序的两种方法,我们可根据自己的需求来灵活选择。