Forum-webmaster
Technique - programmation => PHP / MySQL => Message commencé par: NuDD le le 10-11-2003 a 16:02:03

Titre: Petit pbleme de tri
Posté par: NuDD le le 10-11-2003 a 16:02:03

Bonjour, je viens juste de metre mon site a jour, et j'ais appris par la meme occasion a programmer en PHP (enfin disons que j'ais les bases). J'ais malge tout un pbleme avec l'un de mes tableau qui, je trouve, a une drole de facon d'etre trie ds l'orde alphabetique... Ds ce tableau j'ais des nom d'images (fonds d'ecran) sans extention style:

Code:
tab = array("Nom_Image=800","Nom_Image=1024","Nom_Image=1600");

avec le nobre pour la resolution... je souaite qu'il soit trie donc logiquement (enfin je croi) je devrais obtenir:
Code:
tab = array("Nom_Image=1600","Nom_Image=1024","Nom_Image=800");

pour faire le tri j'ais essaye avec la fonction
Code:
sort();
et
Code:
natsort();
et avec ces deux fonctions j'obtien le meme resulta cad:

Code:
tab = array("Nom_Image=1024","Nom_Image=1600","Nom_Image=800");

Voila si quelqu'un a la solution??

Merci

Titre: Re:Petit pbleme de tri
Posté par: erwinol le le 10-11-2003 a 19:07:12

C'est normal, ce sont des chaines de caractères. Si tu les prends par ordre alphabétique, 800 est après 1600.

Il faudrait les stoquer en nombres pour les avoir dans le bon ordre ... et dans ce cas-çi je vois pas pq tu ne le fais pas. Tu as tjs "Nom_Image=" et puis un nombre ... alors pourquoi ne pas stoquer dans le tableau que le nombre ?

Titre: Re:Petit pbleme de tri
Posté par: dany le le 26-11-2003 a 11:41:52

Tres simple, change en :


Code:
tab = array("Nom_Image=0800","Nom_Image=1024","Nom_Image=1600");


et naturellement le 0800 devient le premier terme de la chaine ;)


pour t'expliquer,
la fonction sort() trie les caractères comme un dictionnaire avec l'alphabet... hors l'alphabet des chiffres c'est 0,1,2,3,4,5,6,7,8,9

donc naturellement 1024 est avant 1600 qui est aussi avant 800
tu comprends alors ce que fait l'ajout du 0 devant 800 ;D


Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.