先按值,然后按键对数组进行排序


Sorting an array by values first, then keys

我想先按值,然后按键对这个键值数组进行排序。

这是阵列:

$a = [
    10 => 1,
    4 => 2,
    3 => 2
];

我想要:

4 => 2,
3 => 2,
10 => 1

我尝试使用arsort,但无法得到当前的答案。

使用uksort按键排序,使用这些键查找数组中的值,首先按值和相等时的键进行比较:

uksort($arr, function ($a, $b) use ($arr) {
    if (($res = $arr[$a] - $arr[$b]) != 0) {
        return $res;
    }
    return $a - $b;
});

请参阅https://stackoverflow.com/a/17364128/476有关排序回调的更深入解释。