Я использую этот код, чтобы сгенерировать список файлов в каталоге index-disabled-by-apache:
<?php
// create array of letters of the aplhabet
$letters = array("a","b","c","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");
foreach (glob("*.*") as $filename) {
if (in_array(strtolower($filename[0]),$letters)){ // check if first character of filename is in the array
echo "<br />";
if(($key = array_search(strtolower($filename[0]), $letters)) !== false) {
unset($letters[$key]); //remove letter from array
}
}
echo "<a href='".$filename."'>".$filename."</a> —— ".intval(filesize($filename) / (1024 * 1024))."MB<br />";
}
?>
Это создает список всех файлов, в группах на основе первой буквы. Во-первых, все буквы «А». Пропустить строку. Затем все имена файлов начинаются с B. Строка пропускается. И так далее.
Однако имена файлов, начинающиеся со строчной буквы, помещаются в одну группу внизу списка.
И я просто не понимаю, почему (я сделал используйте strtolower, видите) и как это исправить.
Если вы видите, как это исправить, и имена файлов начинаются со строчных букв, перечисленных среди имен файлов, начинающихся с заглавной, спасибо!
использование
$files = glob("*.*");
natcasesort($files);
foreach ($files as $filename) {
Вероятно, glob возвращает файлы, отсортированные с учетом регистра. Так что сортируйте массив перед обработкой.
Других решений пока нет …