Array sort PHP

Résolu
Jeronimo -  
 Jeronimo -
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

le père
 
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
Jeronimo
 
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
le père
 
bien sûr. Si elle ne triait que deux éléments, ça ne s'appellerait même pas du tri, juste une comparaison
0
Jeronimo
 
Stylé, merci beaucoup
0