在排序2D数组时保留数组键

mrd*_*iri 2 php arrays sorting multidimensional-array

这是我的2D阵列:

$a = array(
    '6' => array(10, 5),
    '5' => array(20, 7),
    '40' => array(15, 9)
);
Run Code Online (Sandbox Code Playgroud)

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

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

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

Array
(
    [0] => Array
        (
            [0] => 15
            [1] => 9
        )

    [1] => Array
        (
            [0] => 20
            [1] => 7
        )

    [2] => Array
        (
            [0] => 10
            [1] => 5
        )

)
Run Code Online (Sandbox Code Playgroud)

是否array_multisort有任何参数来保存数组键?

dec*_*eze 7

更简单的解决方案uasort:

uasort($a, function ($a, $b) { return $a[1] - $b[1]; });
Run Code Online (Sandbox Code Playgroud)

  • 切换`$ a`和`$ b`参数. (2认同)