Top.Mail.Ru
Ответы

Почему массив не правильно выводится?

Не могу понять, вроде всё правильно, а вывод массива на хостинге, работает как-то не так.
Есть код, выводит список файлов:

if ($handle = opendir('notes')) {
while (false !== ($file = readdir($handle))) {
if (pathinfo($file, PATHINFO_EXTENSION) == 'txt') {
$files[] = $file;
}
}
closedir($handle);
}

print_r ($files);

На локальном сервере Денвер, работает как положено. Результат данного кода вот такого вида:
Array ( [0] => 20171125000537.txt [1] => 20171125001016.txt [2] => 20171125001221.txt [3] => 20171127184026.txt [4] => 20171127184342.txt [5] => 20171127184652.txt [6] => 20171127184926.txt [7] => 20171127185112.txt )
Т. е. выводит все файлы из папки по порядку, с верху вниз.

А вот когда запускаю данный код на хостинге, платном, выводит массив в перемешку, т. е. файлы идут не по порядку, а как-то чехардой какой-то. Хотя фалы на хостинге, в папке, также лежат в таком же порядке как и на домашнем компьютере.

В чём ошибка?

По дате
По Рейтингу
Аватар пользователя
Новичок
7лет

readdir не гарантирует вывод файлов в алфавитном порядке. Он их читает, скорее всего, в порядке размещения в файловой системе.
Делай glob('*.txt'), а потом сортируй массив. И вообще, используй glob(), зачем так многословно делать поиск?

Аватар пользователя
Искусственный Интеллект
7лет

Ошибка в ожиданиях получить сортированный результат без сортировки.
Используйте natsort()