сортировка — сгенерированный PHP список файлов, отсортированных и разделенных буквой: начинающиеся с нижнего регистра имена файлов помещаются в конец

Я использую этот код, чтобы сгенерировать список файлов в каталоге 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>&nbsp; &#8212;&#8212; &nbsp; ".intval(filesize($filename) / (1024 * 1024))."MB<br />";
}
?>

Это создает список всех файлов, в группах на основе первой буквы. Во-первых, все буквы «А». Пропустить строку. Затем все имена файлов начинаются с B. Строка пропускается. И так далее.

Однако имена файлов, начинающиеся со строчной буквы, помещаются в одну группу внизу списка.
И я просто не понимаю, почему (я сделал используйте strtolower, видите) и как это исправить.

Если вы видите, как это исправить, и имена файлов начинаются со строчных букв, перечисленных среди имен файлов, начинающихся с заглавной, спасибо!

0

Решение

использование

$files = glob("*.*");
natcasesort($files);
foreach ($files as $filename) {

Вероятно, glob возвращает файлы, отсортированные с учетом регистра. Так что сортируйте массив перед обработкой.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]