Есть папка с файлами 1.txt, 2.txt, 3.txt Нужно просто вывести все названия файлов из папки, сейчас выводит так ...10.txt11.txt12.txt13.txt14.txt15.txt16.txt17.txt18.txt19.txt20.txt21.txt22.txt23.txt3.txt4.txt5.txt6.txt7.txt8.txt9.txt То есть откуда то берется точка и потом ещё две, и порядок сортировки не понятен, почему не по алфавиту? Сам код простой Код (Text): $files = scandir(__DIR__.'/notes'); //Сортировка по названию (А, Б, В...) sort($files); //Файловая кнопка (Если тебе нужны названия просто пиши 'echo $file') foreach($files as $file) { echo $file; }
Ну точка и две точки - это, соответственно, текущая директория и родительская директория. Это такие, как бы сказать, псевдонимы от ОС (есть и на винде, и на линуксе и на маке). А дальше, то, что ты показываешь - это алфавитный порядок, да. Тут нужно учесть, что когда сортируются строки, сравниваются не числа, а именно цифры, сначала по первой цифре, если первая совпадает - по второй цифре и т.п. Поэтому и получается, что 23 идёт перед 30. А если будут буквы, то порядок будет нормальный. Единственное, для букв не из стандартной латиницы порядок может быть другой, потому что коды другие. В принципе, если в папке русские буквы, а особенно украинские или белорусские, то может быть неожиданный результат из-за особенностей utf8. Но думаю, что в такие тонкости тебе рановато вникать.
думаю вы отпечатались и хотели написать 23 идёт перед 3 и перед 4 То есть 23.txt идёт перед 3.txt и перед 4.txt
Если необязательно на чистом PHP и у Вас Linux, то можно так: Код (Text): <?php echo shell_exec("ls | sort"); ?>
natsort() — встроенная функция в PHP, которая сортирует массив с использованием алгоритма «естественного порядка