xpatval Posté 1 Avril 2009 Posté 1 Avril 2009 Bonjour, Bien que j'ai opté pour une solution particulière, je pose qd même la question: Dans une boucle, je construis un tableau de la sorte: $tab = array("nom"=>$Entry,"duree"=>$temps,"taille"=>$taille) La clé "nom" caractérise un nom de fichier (comportant des "_", dont le(s) dernier(s) caractère est/sont un incrément (de 1 à xx). A la suite de quoi je souhaite exécuter un tri de ce tableau sur le nom. Le problème posé est l'ordre de tri. Un sort($tab) me donnera un tri logique en fonction de l'incrémentation (nom_fichier_1, nom_fichier_10, nom_fichier_11, nom_fichier_2, nom_fichier_3), et non un tri naturel (nom_fichier_1,nom_fichier_2,nom_fichier_3,nom_fichier_10,nom_fichier_11). Le natsort ne fonctionne pas, sans que je sache pourquoi (le champ trié est un string, ou bien les underscore posent problèmes ?) Quelle fonction de tri pourrait faire ce que je souhaite ? La solution que j'ai du adopter est la suivante: Récupération de l'incrément, et construction d'un "index" égal à la valeur de l'incrément: $cpt = incrément du nom de fichier, puis:$tab = array("cpt"=>$cpt,"nom"=>$Entry,"duree"=>$temps,"taille"=>$taille) Ensuite, le sort($tab) trie le tableau comme je le souhaite. Merci de vos réponses, xpatval
SStephane Posté 1 Avril 2009 Posté 1 Avril 2009 En regardant rapidement la doc php, j'ai vu une méthode http://fr.php.net/manual/fr/function.uasort.php qui permet de passer un délégué pour trier ton tableau de la manière dont tu souhaites. Définis juste une fonction qui compare machin_2 et machin_11 selon ton ordre (en enlevant "amchin_" à la chaine et en comparant les entiers par exemple) Je ne sais pas en PHP, mais dans d'autres langages c'est la manière préconisée dans le cadre de bonnes pratiques de tri de tableau. Pas besoin de t'embêter à implémenter un tri à bulles foireux Stéphane.
Jeanluc Posté 1 Avril 2009 Posté 1 Avril 2009 Il est peut-être encore temps de remplacer les nom_fichier_1 par des nom_fichier_01 ? Ma tactique est d'éviter de créer des problèmes plutôt que de les résoudre. Jean-Luc
xpatval Posté 1 Avril 2009 Auteur Posté 1 Avril 2009 Il est peut-être encore temps de remplacer les nom_fichier_1 par des nom_fichier_01 ? Ma tactique est d'éviter de créer des problèmes plutôt que de les résoudre. malheureusement (pour moi), ce ne fut pas possible, et ça ne le sera pas. Quant à uasort, je vais tester... xpatval
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant