Array sort PHP

Résolu/Fermé
Jeronimo - 8 juin 2011 à 11:21
 Jeronimo - 8 juin 2011 à 13:28
Bonjour,
J'ai une énigme pour vous chère codeur PHP

j'ai un table de cette sorte:
Array ( [1] => Array ( [0] => Grospierre Jérémy [id] => 15 [1] => 2.50 [3] => 3.00 [4] => 1.00 [5] => 4.50 ) 
[2] => Array ( [0] => Ambrosio david [id] => 18 [2] => 3.00 ) ) 


J'aimerais trier ce tableau de cette façon:
En fonction des noms (index 0 des 2ème tableaux) attribuer l'ID du tableau dans lequel ils se trouvent ce qui donnerait:

Array ( [1] => Array ( [0] => Ambrosio david [id] => 18 [2] => 3.00 ) 
[2] => Array ( [0] => Grospierre Jérémy [id] => 15 [1] => 2.50 [3] => 3.00 [4] => 1.00 [5] => 4.50 ) ) 


Merci d'avance pour vos solutions, ou astuces.

A voir également:

2 réponses

Bonjour

La fonction uksort tes permet de faire ce genre de chose. Tu définis une fonction de comparaison dans laquelle tu compares selon tes propres critères, et qui rend -1,0 ou 1 selon que le 1er argument est <, = ou > au second

<?php
function MaComparaison ($a,$b) {
  if ($a[0]==$b[0]) return 0;
  return ($a[0] > $b[0]) ? 1 : -1;
}

$tbl= Array ( 1=>Array ( 0 => 'Grospierre Jérémy' ,'id' => 15, 1 => 2.50 ,3 => 3.00, 4 => 1.00 ,5 => 4.50 ), 
2=>Array ( 0 => 'Ambrosio david', 'id' => 18, 2 => 3.00 ) ) ;
uksort ($tbl,"MaComparaison");
print_r($tbl);
?>


petit inconvénient : l'indice de premier niveau n'est pas celui que tu veux. Il suit le mouvement du tri. Si tu tiens à avoir des indices croissants, il suffit de balayer le tableau avec un foreach et de réattribuer les bons indices (sur une copie du tableau)
2
Merci pour votre solution mais il est possible que le tableau aie plusieurs sous-tableau:
Array ( [1] => Array ( [0] => Grospierre Jérémy [id] => 15 [1] => 2.50 [3] => 3.00 [4] => 1.00 [5] => 4.50 )  
[2] => Array ( [0] => Ambrosio david [id] => 18 [2] => 3.00 ) 
[3] => Array ( [0] => Zakari Olivier [id] => 42 [2] => 1.00 ) 
[4] => Array ( [0] => Gentil david [id] => 6 [2] => 7.00 ) )  


Votre solution est-t-elle encore applicable ?

Merci
0
bien sûr. Si elle ne triait que deux éléments, ça ne s'appellerait même pas du tri, juste une comparaison
0
Stylé, merci beaucoup
0