2012-09-12 8 views
2

Il est mon tableau 2D:garder les clés du tableau lors du tri tableau 2D

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

je peux trier simplement avec array_multisort:

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

mais il efface les clés ('6', '5' , '40'):

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

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

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

) 

Est-ce que array_multisort ont des paramètres pour garder les clés du tableau?

+0

Voulez-vous trier les clés? Comme 40, 6, 5 –

+1

@ W.Kristianto: Non, je veux trier le tableau. Mais je veux garder les clés aussi, et n'aime pas les remplacer par des touches numériques de tableau (à partir de 0) – mrdaliri

Répondre

7

solution utilisant uasort Simpler:

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

Merci. mais comment puis-je changer la direction de tri? – mrdaliri

+2

Bascule les arguments '$ a' et' $ b' autour. – deceze