Tri d'un tableau

Eléphant du PHP | 256 Messages

01 mars 2011, 14:53

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 ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

01 mars 2011, 15:18

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

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 256 Messages

01 mars 2011, 16:28

<?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).

ViPHP
ViPHP | 5462 Messages

01 mars 2011, 16:30

plus simple glob + natcasesort

Eléphant du PHP | 256 Messages

01 mars 2011, 16:43

Ma question ne concerne pas la recherche dans un dossier, il concerne le tri d'un tableau.

Eléphant du PHP | 256 Messages

01 mars 2011, 17:29

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 ?