Page 1 sur 1

Tri d'un tableau

Posté : 01 mars 2011, 14:53
par Herve_be
Bonjour,
Je veux mettre les noms des fichiers d'un dossier dans une table et la trier par ordre alphabétique.
Je fais comme ceci

function cmp($a,$b)
{
return ($a[0] < $b[0]) ? -1 : 1;
}

$dir = opendir("Images");
while($file = readdir($dir)) $tab[] = $file;
usort($tab, "cmp");

Ensuite j'affiche le contenu du tableau

foreach($tab as $elem) echo $elem."<br>";

Mais il n'est pas trié !
Où est l'erreur ?

Re: Tri d'un tableau

Posté : 01 mars 2011, 15:18
par moogli
salut,

par rapport a l'exemple de la doc ta fonction n'est pas bonne
<?php
function cmp($a, $b)
{
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}
?>
a tu essayer sort ?

pour récupérer le contenu d'un répertoire tu peut essayer la fonction glob

@+

Re: Tri d'un tableau

Posté : 01 mars 2011, 16:28
par Herve_be
<?php
function cmp($a, $b)
{
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
?>

Ben non, c'est la même chose, tu peux voir le résultat ici http://www.rudyv.be/Aquarium/Images.php (c'est plus lfagrant à la fin).

Re: Tri d'un tableau

Posté : 01 mars 2011, 16:30
par stealth35
plus simple glob + natcasesort

Re: Tri d'un tableau

Posté : 01 mars 2011, 16:43
par Herve_be
Ma question ne concerne pas la recherche dans un dossier, il concerne le tri d'un tableau.

Re: Tri d'un tableau

Posté : 01 mars 2011, 17:29
par Herve_be
J'ai trouvé !
Il trie comme ceci

ATK.jpg
Absorption.jpg
Absorption2.jpg
Acropora bleu 2007-06.jpg
Acropora.jpg
Algue rouge.jpg
Alim RAC.jpg
...
Tunze 7095.jpg
Ver.jpg
Zelio 1.jpg
Zelio 2.jpg
Zelio ecran.jpg
cakh.jpg
cuve.jpg
cuve2.jpg
horloge.jpg

Simplement le tri commence par les majuscules, les minuscules vienennt ensuite !
A noter que j'ai essayé
asort($tab);
ça fonctionne aussi bien (enfin aussi mal) que la function cmp.

Alors la question devient : comment faire pour qu'il ne tienne pas compte de la casse ?