📅  最后修改于: 2023-12-03 14:52:47.855000             🧑  作者: Mango
PHP 中可以使用多种方法对关联数组的数组进行排序,其中按照给定键的值进行排序无疑是最常用的一种方式。以下是关于如何在 PHP 中按给定键的值对关联数组的数组进行排序的介绍。
在 PHP 中,关联数组是一种特殊的数组类型。关联数组中的每个元素都有一个键值对应,而不是像普通数组一样只有数字下标。例如:
$fruit = array("apple" => "red", "banana" => "yellow", "orange" => "orange");
上面的数组中,"apple"、"banana" 和 "orange" 是键,"red"、"yellow" 和 "orange" 是值。
PHP 中的 sort() 函数可以对普通数组按照值进行排序。不过,对于关联数组,sort() 函数只能按照键进行排序,而不是按照某个值进行排序。因此,如果我们要对关联数组按照值进行排序,就需要使用其他函数。
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
)
)
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() 函数可以同时对多个数组进行排序,并且可以指定排序规则。在实际开发中,可以根据具体需求选择适合的方法进行排序。