Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1508 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  trier un tableau

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

trier un tableau

n°1368467
specics
Posté le 17-05-2006 à 09:52:47  profilanswer
 

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

mood
Publicité
Posté le 17-05-2006 à 09:52:47  profilanswer
 

n°1368479
mitch46000
Allez c'est partie !
Posté le 17-05-2006 à 10:05:22  profilanswer
 

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 :d

n°1368482
anapajari
s/travail/glanding on hfr/gs;
Posté le 17-05-2006 à 10:07:05  profilanswer
 

[:rtfm]
array_multisort et l'exemple 3 est exactement ce que tu cherces à faire

n°1368568
specics
Posté le 17-05-2006 à 11:39:12  profilanswer
 

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]

n°1368573
Sh@rdar
Ex-PhPéteur
Posté le 17-05-2006 à 11:43:19  profilanswer
 

donc t'as juste un tableau à 2 dimensions :??: avec asort() ça va aller tout seul


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1368586
specics
Posté le 17-05-2006 à 11:48:28  profilanswer
 

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

n°1368596
Sh@rdar
Ex-PhPéteur
Posté le 17-05-2006 à 11:52:56  profilanswer
 

fait un print_r() d'une ligne stp


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1368620
specics
Posté le 17-05-2006 à 12:08:32  profilanswer
 

Sh@rdar a écrit :

fait un print_r() d'une ligne stp


 

Code :
  1. Array ( [0] => AIRBUS\\Bremen [1] => 26 [2] => 10 [3] => 10 [4] => [5] => 2 [6] => 4 [7] => [8] => [9] => [10] => [11] => [12] => )


 
26 = 10 + 10 + 2 + 4  :na:
 
la colonne [1] fait la somme des colonnes [2] à [12]


Message édité par specics le 17-05-2006 à 12:11:59
n°1368628
Sh@rdar
Ex-PhPéteur
Posté le 17-05-2006 à 12:12:49  profilanswer
 

ouhlà, de la chaine, des entiers :pet1cable: mais une seule dimension..
 
t'as fait un print_r() de $MTG ou du $MTG[4000] là ?


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1368712
specics
Posté le 17-05-2006 à 13:53:08  profilanswer
 

print_r($MTG[$i-1]) dans une boucle mais ca correspondait a un numéro de ligne

mood
Publicité
Posté le 17-05-2006 à 13:53:08  profilanswer
 

n°1368720
Sh@rdar
Ex-PhPéteur
Posté le 17-05-2006 à 13:57:11  profilanswer
 

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()
 

Message cité 1 fois
Message édité par Sh@rdar le 17-05-2006 à 13:58:48

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1368739
anapajari
s/travail/glanding on hfr/gs;
Posté le 17-05-2006 à 14:06:52  profilanswer
 

fait un usort avec la fonction de comparaison qui va bien.
Un truc dans le genre:

Code :
  1. function cmp($a, $b){
  2.      if ($a[1] == $b[1]) {
  3.        return 0;
  4.    }
  5.    return ($a[1] < $b[1]) ? -1 : 1;
  6. }

n°1368740
Sh@rdar
Ex-PhPéteur
Posté le 17-05-2006 à 14:08:22  profilanswer
 

anapajari a écrit :

fait un usort avec la fonction de comparaison qui va bien.
Un truc dans le genre:

Code :
  1. function cmp($a, $b){
  2.      if ($a[1] == $b[1]) {
  3.        return 0;
  4.    }
  5.    return ($a[1] < $b[1]) ? -1 : 1;
  6. }



 
 
le fait qu'il y ait à la fois chaine et entiers va pas géner :??:


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1368746
anapajari
s/travail/glanding on hfr/gs;
Posté le 17-05-2006 à 14:13:11  profilanswer
 

y'a pas de chaine dans la case 1 :o

n°1368747
specics
Posté le 17-05-2006 à 14:13:59  profilanswer
 

Sh@rdar a écrit :

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()


 
ben si c'est a partir d'une colonne que je cherche a trier  :hello:  
 
je veux trier toute les lignes a partir de la colonne [1]
 
c'est pas comptatible ?  :??:  

n°1368752
specics
Posté le 17-05-2006 à 14:20:21  profilanswer
 

anapajari a écrit :

fait un usort avec la fonction de comparaison qui va bien.
Un truc dans le genre:

Code :
  1. function cmp($a, $b){
  2.      if ($a[1] == $b[1]) {
  3.        return 0;
  4.    }
  5.    return ($a[1] < $b[1]) ? -1 : 1;
  6. }



 
il faut pas avoir 2 tableaux pour ça ?

n°1368757
Sh@rdar
Ex-PhPéteur
Posté le 17-05-2006 à 14:25:59  profilanswer
 

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 :??:


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
n°1368763
anapajari
s/travail/glanding on hfr/gs;
Posté le 17-05-2006 à 14:33:01  profilanswer
 

moi de ce que j'ai compris il a un tableau à 2 dimensions:

Code :
  1. MTG[0][0] = 'A';
  2. MTG[0][1] = '44';
  3. MTG[1][0] = 'C';
  4. MTG[1][1] = '10';
  5. MTG[2][0] = 'Z';
  6. MTG[2][1] = '108';


Et il veut que son tableau se retrouve trié en fonction de [i][1] et donc comme ça

Code :
  1. MTG[0][0] = 'Z';
  2. MTG[2][1] = '108';
  3. MTG[1][0] = 'A';
  4. MTG[1][1] = '44';
  5. MTG[2][0] = 'C';
  6. MTG[2][1] = '10';


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


Message édité par anapajari le 17-05-2006 à 14:41:35
n°1368770
Sh@rdar
Ex-PhPéteur
Posté le 17-05-2006 à 14:39:23  profilanswer
 

ah oui j'avais pas pigé ça [:joce]


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  trier un tableau

 

Sujets relatifs
Trier meilleurs scores dans un tableauTrier meilleurs scores dans un tableau
Je rage : J'arrive pas a trier un tableau...trier plusieurs tableau de mem dimension avec un unique ?
Trier un tableau par date ...Trier un "tableau" (d'une page html) issue d'un resultset java ?
trier un tableau à 2 dimensions de caracteresTrier un tableau suivant une colonne
trier un tableau à 2 dimensionTrier un tableau + requete sur 2 tables
Plus de sujets relatifs à : trier un tableau


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR