📜  php order array by specific key - PHP (1)

📅  最后修改于: 2023-12-03 15:33:30.748000             🧑  作者: Mango

PHP:按指定键对数组排序

排序数组是 Web 开发中常见的任务之一,特别是在需要对数据进行分析和比较时。PHP 提供了多种函数来对数组进行排序,可以根据元素的值或键对其进行排序。在这篇文章中,我们将讨论如何对 PHP 数组按照指定的键排序。

使用 usort() 函数

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_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 中按照指定键对数组排序的两种方法,我们可根据自己的需求来灵活选择。