在PHP中使用uasort访问数组键

mmv*_*sbg 9 php arrays sorting usort

如果uasort在PHP中有一个相当基本的函数,如下所示:

uasort($arr, function($a, $b) {
                if ($a > $b)
                    return -1;
                if ($a < $b)
                    return 1;
...
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试排序的数组如下所示:

{[1642] => 1, [9314] => 4, [1634] => 3 ...}
Run Code Online (Sandbox Code Playgroud)

它包含整数,这是我的主要比较标准.但是,如果整数相等,那么我想在uasort函数内部访问它们的键值,并用它做一些魔术来从中找出排序.

我不知道该怎么做,因为它似乎$a$b那得到传递给函数的变量仅仅是整数没有相应的密钥,但因为我用函数实际上应该有访问密钥以及方式保留钥匙.有任何想法吗?

dec*_*eze 12

uksort($arr, function ($a, $b) use ($arr) {
    return $arr[$a] - $arr[$b] ?: $a - $b;
});
Run Code Online (Sandbox Code Playgroud)

您可以通过键获取值,因此使用uksort它可以为您提供键.用$a - $b适当的魔法替换,这里只是按键的值排序.