Я читаю через каталог с некоторыми изображениями и, например, используя довольно простую реализацию readdir (), как показано ниже:
if ($handle = opendir($path)) { while (false !== ($szFilename = readdir($handle))) { if ($szFilename[0] !== '.') { if (is_file($path.$szFilename)) { // do stuff } } } }
Проблема, с которой я сталкиваюсь, заключается в том, что файлы не читаются в алфавитном порядке, поскольку документы для readdir ():
Возвращает имя файла следующего файла из каталога. Имена файлов возвращаются в том порядке, в котором они хранятся в файловой системе.
Еще одна странность в том, что на локальном сервере тестирования тот же код отлично работает. Это выполняется на сервере с использованием стека LAMP в обоих случаях.
Я знаю, что я могу создать массив и просто отсортировать его, но мне было интересно, не пропал ли я что-то в том, что я делал.
Алфавитный порядок :: Я думаю, вы неправильно читаете фрагмент, который вы цитировали …
Возвращает имя файла следующего файла из каталога. Имена файлов возвращаются в том порядке, в котором они хранятся в файловой системе.
Тот факт, что «ls» будет отображать файлы в (обычно) в алфавитном порядке, не означает, что они хранятся в файловой системе. Боюсь, что PHP ведет себя как спецификация.
Вы можете рассмотреть возможность использования scandir в качестве основы для ваших усилий, если алфавитная сортировка является обязательной. 🙂
Вы можете скопировать все имена файлов в массив, а затем использовать
<?php sort($filesArray); ?>
я полагаю, что документы здесь совершенно ясны.
порядок, в котором они хранятся в файловой системе
не совпадает с алфавитным порядком
Вы неправильно читаете документы:
Имена файлов возвращаются в том порядке, в котором они хранятся в файловой системе.
означает, что файлы возвращаются в том порядке, в котором они были созданы.
Есть пара, которую вы можете использовать:
Алфавитный порядок:
<?php sort($handle); ?>
Обратный алфавит Упорядочить:
<?php rsort($handle); ?>