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

  FORUM HardWare.fr
  Programmation
  PHP

  Problème de tri avec usort

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de tri avec usort

n°649760
hakimgomis
Posté le 20-02-2004 à 13:55:30  profilanswer
 

Bonjour,  
J'utilise la fonction USORT afin de trier des tableaux multi-dimension et je rencontre le problème suivant :
 
Lorsque mon élément de tableau contient une valeur numérique, le tri n'est pas correct.  
En revanche quand cet élément est alpha, pas de problème.
 
Voici l'exemple :
 

Code :
  1. function tri_array($a,$b) {
  2. //----------------------------------------
  3. // Fonction utilisée par usort pour les tris
  4. //----------------------------------------
  5. if ($a[4]==$b[4] ) return 0;
  6. return ($a[4]>$b[4] ) ? 1:-1;
  7. }


 
puis la fonction d'appel

Code :
  1. $ee=usort($tabl,tri_array); // tri de l'arborescence


 
Le tableau est constitué comme suit :

Code :
  1. array_push($tabl,array( $chn[1],
  2.   $chn[0],
  3.   $chn[2],
  4.   str_pad(rtrim(ltrim($chn[4])),4,"0",STR_PAD_LEFT)."".str_pad(rtrim(ltrim($num+1)),4,"0",STR_PAD_LEFT),
  5.   "",
  6.   "" )); // nom, page, page mère, id, chaine, niveau


 
Dans ce cas le résultat est le suivant sur un écho de la zone triée :

Code :
  1. 0001000100010009006000440000000000000000
  2. 0001000100010009008000710020007300000000
  3. 0001000100010009008000750000000000000000
  4. 0001000100010009008000710000000000000000
  5. 0001000100010009008000710010007200000000
  6. 0001000100010009008001370000000000000000
  7. 0001000100010009008200760000000000000000
  8. .....
  9. 0001000100010009034000690000000000000000
  10. 0001000100010009050000800010008200000000
  11. 0001000100010009050000800000000000000000
  12. 0001000100010009050000800015008300000000
  13. 0001000100010009052000810025008500000000
  14. 0001000100010009052000810000000000000000
  15. 0001000100010009052000810020008400000000
  16. 0001000100020016000000000000000000000000
  17. 0001000100030022000000000000000000000000


 
En introduisant un caractère alpha dans la chaine  
Le tableau est crée comme suit :

Code :
  1. array_push($tabl,array( $chn[1],
  2.   $chn[0],
  3.   $chn[2],
  4.   str_pad(rtrim(ltrim($chn[4])),4,"0",STR_PAD_LEFT)."X".str_pad(rtrim(ltrim($num+1)),3,"0",STR_PAD_LEFT),
  5.   "",
  6.   "" )); // nom, page, page mère, id, chaine, niveau


 
 
cela donne :

Code :
  1. 0001X0010001X0090060X0440000000000000000
  2. 0001X0010001X0090080X0710000000000000000
  3. 0001X0010001X0090080X0710010X07200000000
  4. 0001X0010001X0090080X0710020X07300000000
  5. 0001X0010001X0090080X0750000000000000000
  6. 0001X0010001X0090080X1370000000000000000
  7. 0001X0010001X0090082X0760000000000000000
  8. ....
  9. 0001X0010001X0090340X0690000000000000000
  10. 0001X0010001X0090500X0800000000000000000
  11. 0001X0010001X0090500X0800010X08200000000
  12. 0001X0010001X0090500X0800015X08300000000
  13. 0001X0010001X0090520X0810000000000000000
  14. 0001X0010001X0090520X0810020X08400000000
  15. 0001X0010001X0090520X0810025X08500000000
  16. 0001X0010002X016000000000000000000000000
  17. 0001X0010003X022000000000000000000000000


 
Si vous aviez une idée de la raison de ce tri erroné ?  
 
Merci

mood
Publicité
Posté le 20-02-2004 à 13:55:30  profilanswer
 

n°649856
anapajari
s/travail/glanding on hfr/gs;
Posté le 20-02-2004 à 14:47:06  profilanswer
 

arrete moi si je me trompe mais tu fais ton tri sur le 5eme element de ton tableau. Or il est toujours égale à "" dans ton exemple!?
 
ps: à mon avis c'est quand même plus simple de faire trim($text) que ltrim(rtrim($text))


Message édité par anapajari le 20-02-2004 à 14:47:19
n°649868
hakimgomis
Posté le 20-02-2004 à 14:54:47  profilanswer
 

Oui ok il y a plus de code et c'est bien le 5eme élément mais il contient les éléments concaténés des 4ème.  
En fait, je traite une arborescence et je stocke dans la 5eme zone l'identifiant de la page mère.
 
Pour le trim, ok, c'est une vieille habitude !


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

  Problème de tri avec usort

 

Sujets relatifs
problème de table[RESOLU]Problème de communication (DataInputStream & DataOutputStream)
Problème d'installation de Javamail (urgent)probleme avec variable de session (sou oracle)
[Mysql] problème avec SELECT WHERE IN[CSS] Problème de placement de div avec float
[Windev7.5] Problème avec une clef composé[C++] Probleme de linkage sous Visual C++
petit problème avec mon forum phpbbProbleme de récupération des variables d'une page à l'autre
Plus de sujets relatifs à : Problème de tri avec usort


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