在对2D数组进行排序时保留数组键


keep array keys while sorting 2D array

这是我的2D阵列:

$a = array(
    '6' => array(10, 5),
    '5' => array(20, 7),
    '40' => array(15, 9)
);

我可以简单地用array_multisort:进行排序

foreach ($a as $k => $r) {
    $keys[$k] = $r[1]; 
}
array_multisort($keys, SORT_DESC, $a);

但它清除了键(‘6’,‘5’,‘40’):

Array
(
    [0] => Array
        (
            [0] => 15
            [1] => 9
        )
    [1] => Array
        (
            [0] => 20
            [1] => 7
        )
    [2] => Array
        (
            [0] => 10
            [1] => 5
        )
)

array_multisort是否有保留数组密钥的参数?

使用uasort:的更简单的解决方案

uasort($a, function ($a, $b) { return $a[1] - $b[1]; });