PHP使用array_multisort对多个数组或多维数组进行排序

下面是“PHP使用array_multisort对多个数组或多维数组进行排序”的完整攻略:

下面是“PHP使用array_multisort对多个数组或多维数组进行排序”的完整攻略:

1. array_multisort()函数介绍

array_multisort()函数是 PHP 内置的多维数组排序函数,它可以用来对多个关联数组或多维数组进行排序。该函数的作用是依次按指定顺序对两个或两个以上的数组进行排序,然后依照它们之间的顺序来排序。如果数组中的元素相同,将按照下一个数组进行排序,直到最后一个数组。可以使用该函数来排序索引数组、关联数组和多维数组。

2. array_multisort()函数用法

array_multisort() 函数的一般语法为:

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

参数解释:

  • $array1:必选参数,目标数组。
  • $array1_sort_order:可选参数,排序的方式,可选常量值为 SORT_ASC(升序,默认)或 SORT_DESC(降序)。
  • $array1_sort_flags:可选参数,排序类型,支持以下类型:
    • SORT_REGULAR:默认。将每一项按照通常方法转换为字符串,然后比较它们。
    • SORT_NUMERIC:将每一项转换为数字,再进行比较。
    • SORT_STRING:将每一项作为字符串进行比较。
    • SORT_LOCALE_STRING:根据当前的本地化设置,将每一项作为一个字符串进行比较。
    • SORT_NATURAL:按照自然排序法进行比较,如:abc1, abc2, abc10, abc20等。
    • SORT_FLAG_CASE:可以组合(按位或)到 SORT_STRINGSORT_NATURAL 标志来忽略大小写。

3. array_multisort()函数使用示例

示例1:对多个数组进行排序

下面的例子对多个数组进行排序,第一个数组按照升序排列,第二个数组按照降序排列,同时将第三个数组排序。最终结果按照第一个数组进行排序:

<?php
// 创建三个数组
$name = array("Tom", "Sam", "Jack", "Rose");
$age = array(23, 28, 32, 19);
$salary = array(4000, 5000, 6000, 7000);

//对三个数组进行排序
array_multisort($name, SORT_ASC, $age, SORT_DESC, $salary);

// 输出已经排序的数组
print_r($name);
echo "<br>";
print_r($age);
echo "<br>";
print_r($salary);
?>

输出结果:

Array ( [3] => Rose [1] => Sam [0] => Tom [2] => Jack )
Array ( [2] => 32 [1] => 28 [0] => 23 [3] => 19 )
Array ( [3] => 7000 [2] => 6000 [1] => 5000 [0] => 4000 )

从输出结果可以看出,第一个数组已按字母顺序排序;第二个数组已按相反的数字顺序排序,第三个数组也按第一个数组的顺序进行了排序。

示例2:对多维数组进行排序

下面的例子演示如何使用 array_multisort() 函数对多维数组进行排序。假设要对员工信息数组按照姓名(正序)和年龄(倒序)字段进行排序:

<?php
// 员工信息数组
$employees = array(
    array(
        "name" => "Tom",
        "age" => 23,
        "salary" => 4000
    ),
    array(
        "name" => "Sam",
        "age" => 28,
        "salary" => 5000
    ),
    array(
        "name" => "Jack",
        "age" => 32,
        "salary" => 6000
    ),
    array(
        "name" => "Rose",
        "age" => 19,
        "salary" => 7000
    )
);

// 提取name和age数组,并放到新数组中
foreach ($employees as $key => $row) {
    $namelist[$key] = $row['name'];
    $agelist[$key] = $row['age'];
}

// 按照name升序、age降序排序
array_multisort($namelist, SORT_ASC, $agelist, SORT_DESC, $employees);

// 输出已经排序的数组
print_r($employees);
?>

输出结果:

Array
(
    [0] => Array
        (
            [name] => Jack
            [age] => 32
            [salary] => 6000
        )

    [1] => Array
        (
            [name] => Rose
            [age] => 19
            [salary] => 7000
        )

    [2] => Array
        (
            [name] => Sam
            [age] => 28
            [salary] => 5000
        )

    [3] => Array
        (
            [name] => Tom
            [age] => 23
            [salary] => 4000
        )

)

从输出结果可以看出,输出结果已按照指定的顺序排序。

本文标题为:PHP使用array_multisort对多个数组或多维数组进行排序

基础教程推荐