ZetCode

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)。

不区分大小写的排序

krsortarray_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(不区分大小写)。

最佳实践

来源

PHP krsort 文档

本教程涵盖了 PHP krsort 函数,并提供了实际示例,展示了其在反向键排序场景中的用法。

作者

我叫 Jan Bodnar,是一名充满激情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。至今,我已撰写了 1,400 多篇文章和 8 本电子书。我在教授编程方面拥有十多年的经验。

列出 所有 PHP 数组函数