trier un tableau - PHP - Programmation
Marsh Posté le 17-05-2006 à 10:05:22
tu peux utiliser la fonction array_multisort()
voir ->http://www.manuelphp.com/php/function.array-multisort.php
ou alors tu crées un requete SQL pour trier ton TOTAL avec un ORDER BY il me semble mais j en suis pas sur voila
Marsh Posté le 17-05-2006 à 10:07:05
array_multisort et l'exemple 3 est exactement ce que tu cherces à faire
Marsh Posté le 17-05-2006 à 11:39:12
j'ai pas réussi a adapter le code a mon tableu car je ne l'ai pas défini de la meme façon. Et puis je ne cherche pas à le trier en fonction d'une dimension toute entière mais d'un critère.
Mon tableau a une surface de:
$MTG[4000][12]
et j'aimerai le trier en fonction de:
$MTG[][1]
Marsh Posté le 17-05-2006 à 11:43:19
donc t'as juste un tableau à 2 dimensions avec asort() ça va aller tout seul
Marsh Posté le 17-05-2006 à 11:48:28
ouai mais dans ce cas il va trier en fonction de la premier colonne et je veux qu'il le fasse en fonction de la deuxième
Marsh Posté le 17-05-2006 à 11:52:56
fait un print_r() d'une ligne stp
Marsh Posté le 17-05-2006 à 12:08:32
Sh@rdar a écrit : fait un print_r() d'une ligne stp |
Code :
|
26 = 10 + 10 + 2 + 4
la colonne [1] fait la somme des colonnes [2] à [12]
Marsh Posté le 17-05-2006 à 12:12:49
ouhlà, de la chaine, des entiers mais une seule dimension..
t'as fait un print_r() de $MTG ou du $MTG[4000] là ?
Marsh Posté le 17-05-2006 à 13:53:08
print_r($MTG[$i-1]) dans une boucle mais ca correspondait a un numéro de ligne
Marsh Posté le 17-05-2006 à 13:57:11
j'ai pas bien lu ta seconde réponse en fait..
ce que tu veux faire est impossible, la structure de ton tableau ne convient pas puisque tu essaye de trier sur un élément d'une ligne et pas une colonne, tu t'es mélangé les pinceaux entre les deux
il faudra sortir la clef que tu veux trier et utiliser array_multisort()
Marsh Posté le 17-05-2006 à 14:08:22
anapajari a écrit : fait un usort avec la fonction de comparaison qui va bien.
|
le fait qu'il y ait à la fois chaine et entiers va pas géner
Marsh Posté le 17-05-2006 à 14:13:59
Sh@rdar a écrit : j'ai pas bien lu ta seconde réponse en fait.. |
ben si c'est a partir d'une colonne que je cherche a trier
je veux trier toute les lignes a partir de la colonne [1]
c'est pas comptatible ?
Marsh Posté le 17-05-2006 à 14:20:21
anapajari a écrit : fait un usort avec la fonction de comparaison qui va bien.
|
il faut pas avoir 2 tableaux pour ça ?
Marsh Posté le 17-05-2006 à 14:25:59
je suis pas bien en forme depuis ce matin mais le tableau il est comme ça non ?
MTG[i][0] = 'Airbus';
MTG[i][1] = 26;
..
MTG[i][12] = '';
MTG[i+1][0] = 'tagada';
MTG[i+1][1] = 42
...
et tu trie sur le total, le reste de ton tableau va être ordonné comment ??
MTG[i+1][1] = 42;
MTG[i][1] = 36;
en fait, plus je relis, plus j'ai l'impression de rien capter
Marsh Posté le 17-05-2006 à 14:33:01
moi de ce que j'ai compris il a un tableau à 2 dimensions:
Code :
|
Et il veut que son tableau se retrouve trié en fonction de [i][1] et donc comme ça
Code :
|
Le code que j'ai donné plus haut doit faire ça ( sauf que ça trie peut être en asc au lien d'en desc)...
Et non il ne faut pas avoir 2 tableaux pour faire ça.
La fonction de cmp prend 2 elements du tableau courant et les compare. Dans notre cas ces deux elements sont des tableaux, on précise donc [1] sur chacun d'eux pour qu'ils soient comparer en fonction de la valeur de cette "colonne".
edit: j'avais merdé l'ordre des résultats du tableau.
edit2: en fait tu dois quand même pouvoir le faire avec array_multisort
Marsh Posté le 17-05-2006 à 14:39:23
ah oui j'avais pas pigé ça
Marsh Posté le 17-05-2006 à 09:52:47
savez vous s'il existe une fonction (comme sort()) qui trie un tableau mais en fonction d'une colonne choisie ?
par exemple dans mon cas j'ai une colonne avec des noms de société et dans la deuxième un total. et j'aimerai classer en fonction du total.
merci d'avance