📜  如何在PHP中按给定键的值对关联数组的数组进行排序?(1)

📅  最后修改于: 2023-12-03 14:52:47.855000             🧑  作者: Mango

如何在PHP中按给定键的值对关联数组的数组进行排序?

PHP 中可以使用多种方法对关联数组的数组进行排序,其中按照给定键的值进行排序无疑是最常用的一种方式。以下是关于如何在 PHP 中按给定键的值对关联数组的数组进行排序的介绍。

基本概念

在 PHP 中,关联数组是一种特殊的数组类型。关联数组中的每个元素都有一个键值对应,而不是像普通数组一样只有数字下标。例如:

$fruit = array("apple" => "red", "banana" => "yellow", "orange" => "orange");

上面的数组中,"apple"、"banana" 和 "orange" 是键,"red"、"yellow" 和 "orange" 是值。

sort() 函数

PHP 中的 sort() 函数可以对普通数组按照值进行排序。不过,对于关联数组,sort() 函数只能按照键进行排序,而不是按照某个值进行排序。因此,如果我们要对关联数组按照值进行排序,就需要使用其他函数。

使用 usort() 函数

PHP 中的 usort() 函数可以用于对关联数组按照给定键的值进行排序。该函数与 sort() 函数不同的是,它可以自定义排序规则。

以下是按照关联数组中 "age" 键的值进行排序的示例代码:

function compare_by_age($a, $b) {
    if ($a["age"] == $b["age"]) {
        return 0;
    }
    return ($a["age"] < $b["age"]) ? -1 : 1;
}

$people = array(
    array("name" => "John", "age" => 20),
    array("name" => "Mary", "age" => 25),
    array("name" => "Peter", "age" => 18),
    array("name" => "David", "age" => 22)
);

usort($people, "compare_by_age");

print_r($people);

输出结果为:

Array
(
    [0] => Array
        (
            [name] => Peter
            [age] => 18
        )

    [1] => Array
        (
            [name] => John
            [age] => 20
        )

    [2] => Array
        (
            [name] => David
            [age] => 22
        )

    [3] => Array
        (
            [name] => Mary
            [age] => 25
        )

)
使用 array_multisort() 函数

PHP 中的 array_multisort() 函数可以用于对关联数组按照给定键的值进行排序。该函数可以同时对多个数组进行排序,并且可以指定排序规则。

以下是按照关联数组中 "age" 键的值进行排序的示例代码:

$people = array(
    array("name" => "John", "age" => 20),
    array("name" => "Mary", "age" => 25),
    array("name" => "Peter", "age" => 18),
    array("name" => "David", "age" => 22)
);

foreach ($people as $key => $row) {
    $age[$key] = $row["age"];
}

array_multisort($age, SORT_ASC, $people);

print_r($people);

输出结果为:

Array
(
    [0] => Array
        (
            [name] => Peter
            [age] => 18
        )

    [1] => Array
        (
            [name] => John
            [age] => 20
        )

    [2] => Array
        (
            [name] => David
            [age] => 22
        )

    [3] => Array
        (
            [name] => Mary
            [age] => 25
        )

)
总结

以上介绍了在 PHP 中按给定键的值对关联数组的数组进行排序的两种方法:使用 usort() 函数和使用 array_multisort() 函数。usort() 函数可以自定义排序规则,而 array_multisort() 函数可以同时对多个数组进行排序,并且可以指定排序规则。在实际开发中,可以根据具体需求选择适合的方法进行排序。