Array sort PHP
Résolu
Jeronimo
-
Jeronimo -
Jeronimo -
Bonjour,
J'ai une énigme pour vous chère codeur PHP
j'ai un table de cette sorte:
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:
Merci d'avance pour vos solutions, ou astuces.
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:
- Array sort PHP
- Easy php - Télécharger - Divers Web & Internet
- Aucun son ne sort de mon pc - Guide
- Expert php pinterest - Télécharger - Langages
- Ma souris sort de l'écran en jeu - Forum jeux en ligne
- Php alert ✓ - Forum PHP
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
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)
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)
Merci pour votre solution mais il est possible que le tableau aie plusieurs sous-tableau:
Votre solution est-t-elle encore applicable ?
Merci
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