$listfile.=' <li><a href="'.$afile.'"</a>'.$afile.'</li>';
Ça serait pas plutôt:
$listfile = '<li><a href="' . $afile . '">' . $afile . '</a></li>';
asort n'est pas pour alphabetic sort mais pour associative sort car ce tri conserve les index d'origine, ce qui n'est pas utile ici, un simple sort fera l'affaire(*).
La boucle while doit être fermée avant la commande de tri (et pas après le foreach).
Sinon l'idée c'est bien ça: on stocke les noms de fichiers dans un tableau, on le trie, puis on fait une deuxième boucle sur le tableau trié pour les afficher.
(*)Si on souhaite que le tri suive l'interclassement du français (ou d'une autre langue), il faut utiliser SORT_LOCALE_STRING comme deuxième paramètre de sort et s'assurer d'avoir la bonne locale LC_COLLATE="fr_FR.UTF-8" avec setlocale().
Partager