trier un tableau multidimensionnel en fonction d'une colonne

trier un tableau multidimensionnel en fonction d'une colonne - PHP - Programmation

Marsh Posté le 08-10-2007 à 12:12:36    

Bonjour à tous,
 
J'ai un tableau multidimensionnel, que je voudrais trier en fonction d'une "colonne" de ce même tableau. je m'explique en montrant un peu :
 
Imaginons un tableau de ce genre :
 
 

Code :
  1. $_SESSION['panier']['groupe']=91;
  2. $_SESSION['panier']['libelle']="mon article";
  3. $_SESSION['panier']['prix']=50;
  4. $_SESSION['panier']['quantité']=5;
  5. $_SESSION['panier']['groupe']=54;
  6. $_SESSION['panier']['libelle']="mon article 2";
  7. $_SESSION['panier']['prix']=15;
  8. $_SESSION['panier']['quantité']=2;
  9. $_SESSION['panier']['groupe']=52;
  10. $_SESSION['panier']['libelle']="mon article 3";
  11. $_SESSION['panier']['prix']=17;
  12. $_SESSION['panier']['quantité']=3;
  13. $_SESSION['panier']['groupe']=91;
  14. $_SESSION['panier']['libelle']="mon article 4";
  15. $_SESSION['panier']['prix']=27;
  16. $_SESSION['panier']['quantité']=6;


 
 
j'aimerai trier mon tableau en fonction de la valeur se trouvant dans la colonne "groupe";  afin de grouper les articles par groupe!
 
afin de me retrouver avec un tableau plutot comme ça :

Code :
  1. $_SESSION['panier']['groupe']=52;
  2. $_SESSION['panier']['libelle']="mon article 3";
  3. $_SESSION['panier']['prix']=17;
  4. $_SESSION['panier']['quantité']=3;
  5. $_SESSION['panier']['groupe']=54;
  6. $_SESSION['panier']['libelle']="mon article 2";
  7. $_SESSION['panier']['prix']=15;
  8. $_SESSION['panier']['quantité']=2;
  9. $_SESSION['panier']['groupe']=91;
  10. $_SESSION['panier']['libelle']="mon article";
  11. $_SESSION['panier']['prix']=50;
  12. $_SESSION['panier']['quantité']=5;
  13. $_SESSION['panier']['groupe']=91;
  14. $_SESSION['panier']['libelle']="mon article 4";
  15. $_SESSION['panier']['prix']=27;
  16. $_SESSION['panier']['quantité']=6;


 
... j'ai fouillé toutes les fonctions de tri de array en php.. mais j'ai pas trouvé celle qui me convient (il y en a tellement et elle se ressemblent bcp !)... que feriez vous?
 
Merci d'avance
 
Freed

Reply

Marsh Posté le 08-10-2007 à 12:12:36   

Reply

Marsh Posté le 08-10-2007 à 12:46:37    

Code :
  1. function compare($t1,$t2)
  2. {
  3.      return $t1['groupe'] -$t2['groupe'];
  4. }
  5. uasort ($tab, "compare" );


Message édité par flo850 le 08-10-2007 à 13:54:45
Reply

Marsh Posté le 09-10-2007 à 16:11:35    

merci !
j'ai essayé ta fonction, mais ça ne fonctionnait pas vraiment comme je le souhaitais, les clefs et valeurs avaient l'air d'etre mélangées...  
 
j'ai trouvé ça qui a l'air de tres  bien fonctionner :
 

Code :
  1. function array_sort($array, $key)
  2. {
  3.   for ($i = 0; $i < sizeof($array); $i++) {
  4.       $sort_values[$i] = $array[$i][$key];
  5.   }
  6.   asort  ($sort_values);
  7.   reset ($sort_values);
  8.  
  9.   while (list ($arr_key, $arr_val) = each ($sort_values)) {
  10.         $sorted_arr[] = $array[$arr_key];
  11.   }
  12.   unset($array);
  13.   return $sorted_arr;
  14. }
  15. //je l'utilise comme ça :
  16. $_SESSION['panier']=array_sort($_SESSION['panier'],'groupe');


Message édité par freed102 le 09-10-2007 à 16:12:48
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed