欢迎访问宙启技术站
智能推送

PHP多维数组排序函数的使用

发布时间:2023-06-20 03:44:44

在PHP中,多维数组是指包含多个数组的数组,每个数组又可能包含多个数组,如此循环嵌套。在实际的开发中,我们经常需要对多维数组进行排序。PHP提供了一系列函数来实现多维数组的排序,下面我们来详细了解一下。

1. usort()函数

usort()函数是PHP标准库中的一个数组排序函数,该函数可以对数组进行排序,同时也能够对多维数组进行排序。usort()函数的基本形式为:

bool usort ( array &$array , callable $cmp_function )

其中,参数$cmp_function为比较函数,该函数接收两个参数,分别是需要比较的数组元素,返回值为正数、零、负数,表示 个参数大于、等于、小于第二个参数。比较函数的定义可以使用匿名函数,例如:

$arr = [
    ['name' => 'Tom', 'age' => 18],
    ['name' => 'Jerry', 'age' => 20],
    ['name' => 'Lucy', 'age' => 16]
];
usort($arr, function($a, $b) {
    return $a['age'] - $b['age'];
});
print_r($arr);

运行以上代码后,输出结果为:

Array
(
    [0] => Array
        (
            [name] => Lucy
            [age] => 16
        )

    [1] => Array
        (
            [name] => Tom
            [age] => 18
        )

    [2] => Array
        (
            [name] => Jerry
            [age] => 20
        )
)

根据上述代码,我们通过usort()函数对多维数组$arr按照年龄进行排序,使得$arr[0]是最小值,$arr[2]是最大值。

2. array_multisort()函数

array_multisort()函数也是PHP标准库中的一个多维数组排序函数,它的基本形式为:

bool array_multisort ( array &$array1 [, mixed $array1_sort_order = SORT_ASC [, mixed $array1_sort_flags = SORT_REGULAR [, mixed $... ]]] )

该函数可以同时将多个数组进行排序,也能够对多维数组进行排序。下面我们来看一下如何使用array_multisort()函数来对多维数组进行排序。

$arr = [
    ['name' => 'Tom', 'age' => 18],
    ['name' => 'Jerry', 'age' => 20],
    ['name' => 'Lucy', 'age' => 16]
];
foreach ($arr as $key => $row) {
    $name[$key]  = $row['name'];
    $age[$key] = $row['age'];
}
array_multisort($age, SORT_ASC, $name, SORT_ASC, $arr);
print_r($arr);

通过以上代码,我们通过array_multisort()函数对多维数组$arr按照年龄进行排序,如果年龄相同,则按照姓名进行排序,最终输出结果为:

Array
(
    [0] => Array
        (
            [name] => Lucy
            [age] => 16
        )

    [1] => Array
        (
            [name] => Tom
            [age] => 18
        )

    [2] => Array
        (
            [name] => Jerry
            [age] => 20
        )
)

以上是我们介绍的两种PHP多维数组排序函数的使用方法,大家在实际的开发中可以结合自己实际的需求使用它们,快速高效地对多维数组进行排序。