PHP krsort 函数
最后修改于 2025 年 3 月 13 日
PHP 的 krsort 函数以反向顺序对数组按键排序。它会保持索引关联,非常适合关联数组。
基本定义
krsort 函数以降序对数组的键进行排序。成功时返回 true,失败时返回 false。排序是就地进行的。
语法:krsort(array &$array, int $flags = SORT_REGULAR): bool。可选的 $flags 参数会修改排序行为。
基本 krsort 示例
这演示了按反向顺序对关联数组的键进行排序。
basic_krsort.php
<?php
$fruits = [
"d" => "lemon",
"a" => "orange",
"b" => "banana",
"c" => "apple"
];
krsort($fruits);
foreach ($fruits as $key => $val) {
echo "$key = $val\n";
}
输出:d = lemon c = apple b = banana a = orange。数组按键的逆字母顺序排序,同时保持键值对。
对数字键进行排序
krsort 可以将数字键的数组按降序排序。
numeric_keys.php
<?php
$numbers = [
10 => "ten",
2 => "two",
5 => "five",
8 => "eight"
];
krsort($numbers);
print_r($numbers);
输出显示键按降序数字排序:10, 8, 5, 2。该函数在排序键时正确处理数字比较。
使用排序标志
$flags 参数更改了排序过程中键的比较方式。
sorting_flags.php
<?php
$mixed = [
"10" => "ten",
"2" => "two",
"5" => "five",
"8" => "eight"
];
krsort($mixed, SORT_NUMERIC);
print_r($mixed);
使用 SORT_NUMERIC 时,字符串键被视为数字。输出显示了正确的数字顺序:10, 8, 5, 2,尽管它们是字符串键。
对多维数组进行排序
krsort 可以对具有复杂键(如数组或对象)的数组进行排序。
multi_dimensional.php
<?php
$items = [
["id" => 3, "name" => "C"],
["id" => 1, "name" => "A"],
["id" => 4, "name" => "D"],
["id" => 2, "name" => "B"]
];
// Create keys from id values
$keyed = array_column($items, null, "id");
krsort($keyed);
print_r($keyed);
这首先创建一个以 ID 作为键的数组,然后按反向顺序对其进行排序。输出显示项目按 ID 降序排序(4、3、2、1)。
不区分大小写的排序
将 krsort 与 array_change_key_case 结合使用以实现不区分大小写的排序。
case_insensitive.php
<?php
$colors = [
"Red" => "#FF0000",
"GREEN" => "#00FF00",
"blue" => "#0000FF",
"Yellow" => "#FFFF00"
];
// Convert keys to lowercase for consistent sorting
$lowerKeys = array_change_key_case($colors, CASE_LOWER);
krsort($lowerKeys);
print_r($lowerKeys);
这会在排序前将所有键转换为小写。输出显示键按反向字母顺序排序:yellow、red、green、blue(不区分大小写)。
最佳实践
- 关联数组:主要将 krsort 用于关联数组。
- 性能:处理大型数组时要小心,因为它会就地排序。
- 标志:为数据类型选择合适的排序标志。
- 稳定性:请记住,krsort 不是稳定排序。
来源
本教程涵盖了 PHP krsort 函数,并提供了实际示例,展示了其在反向键排序场景中的用法。
作者
列出 所有 PHP 数组函数。