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 数组函数。