2010-12-07 4 views
3

J'ai un tableau qui ressemble à ceci:Tableau Trier 2D en PHP

Array 
(

[90] => Array 
    (
     [1056] => 44.91 
     [1055] => 53.56 
     [1054] => 108.88 
     [1053] => 23.28 

    ), 
[63] => Array 
    (
     [1056] => 44.44 
     [1055] => 53.16 
     [1054] => 108.05 

    ), 
[21] => Array 
    (
     [1056] => 42.83 
     [1055] => 51.36 
     [1054] => 108.53 
    ) 
); 

Les deux touches ([x] et [y]) renvoient à ID dans ma base de données, de sorte que ceux doivent rester intacts. L'ordre de [x] n'a pas d'importance, mais j'ai besoin de trier chaque tableau par la valeur de [y].

Edit: J'ai essayé cette boucle, mais il ne semble pas fonctionner:

foreach($distance as $key=>$value) { 
    asort($value,SORT_NUMERIC); 
} 
+0

Vous pourriez juste boucle à travers le réseau externe avec un foreach et trier tous les tableaux intérieur avec ksort. – vichle

Répondre

3

Utilisez ksort (ou uksort) pour trier les tableaux par leurs clés. MISE À JOUR: Utilisez asort (ou uasort) pour trier par valeurs, en conservant les clés.

MISE À JOUR 2: Essayez cette

foreach($distance as &$value) { 
    asort($value,SORT_NUMERIC); 
} 
+0

Je veux trier par les valeurs (44.91, 53.96, etc), pas les clés ([1055], [1056], etc). – Jarred

+0

Voir la réponse mise à jour. –

+0

S'il vous plaît voir la modification dans mon message d'origine. – Jarred

2

Utilisez asort() pour le tri des valeurs. Il maintient les associations d'index. Pour la boucle, vous devez passer $value par référence, de sorte que vous devez utiliser &$value.

+0

S'il vous plaît voir la modification dans mon message d'origine. – Jarred

4

Comme ça?

array_walk($array, 'asort'); 
+0

Je me demande si cela va fonctionner. –

+0

+1 Fonctionne bien .. –

0
array_multisort($arrindex1, SORT_DESC, $arrindex2, SORT_DESC, $array);