PHP readdir () не возвращает файлы в алфавитном порядке

Я читаю через каталог с некоторыми изображениями и, например, используя довольно простую реализацию readdir (), как показано ниже:

if ($handle = opendir($path)) { while (false !== ($szFilename = readdir($handle))) { if ($szFilename[0] !== '.') { if (is_file($path.$szFilename)) { // do stuff } } } } 

Проблема, с которой я сталкиваюсь, заключается в том, что файлы не читаются в алфавитном порядке, поскольку документы для readdir ():

Возвращает имя файла следующего файла из каталога. Имена файлов возвращаются в том порядке, в котором они хранятся в файловой системе.

Еще одна странность в том, что на локальном сервере тестирования тот же код отлично работает. Это выполняется на сервере с использованием стека LAMP в обоих случаях.

Я знаю, что я могу создать массив и просто отсортировать его, но мне было интересно, не пропал ли я что-то в том, что я делал.

Solutions Collecting From Web of "PHP readdir () не возвращает файлы в алфавитном порядке"

Алфавитный порядок :: Я думаю, вы неправильно читаете фрагмент, который вы цитировали …

Возвращает имя файла следующего файла из каталога. Имена файлов возвращаются в том порядке, в котором они хранятся в файловой системе.

Тот факт, что «ls» будет отображать файлы в (обычно) в алфавитном порядке, не означает, что они хранятся в файловой системе. Боюсь, что PHP ведет себя как спецификация.

Вы можете рассмотреть возможность использования scandir в качестве основы для ваших усилий, если алфавитная сортировка является обязательной. 🙂

Вы можете скопировать все имена файлов в массив, а затем использовать

 <?php sort($filesArray); ?> 

я полагаю, что документы здесь совершенно ясны.

порядок, в котором они хранятся в файловой системе

не совпадает с алфавитным порядком

Вы неправильно читаете документы:

Имена файлов возвращаются в том порядке, в котором они хранятся в файловой системе.

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

Есть пара, которую вы можете использовать:

Алфавитный порядок:

 <?php sort($handle); ?> 

Обратный алфавит Упорядочить:

 <?php rsort($handle); ?>