За последние 24 часа нас посетили 18464 программиста и 1612 роботов. Сейчас ищут 1340 программистов ...

Взрыв мозга: как вывести файлы из папки в алфавитном порядке?

Тема в разделе "PHP для новичков", создана пользователем PhpAdventure, 21 янв 2025.

  1. PhpAdventure

    PhpAdventure Гость

    С нами с:
    21 янв 2025
    Сообщения:
    1
    Симпатии:
    0
    Есть папка с файлами 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):
    1. $files = scandir(__DIR__.'/notes'); //Сортировка по названию (А, Б, В...)
    2. sort($files); //Файловая кнопка (Если тебе нужны названия просто пиши 'echo $file')
    3. foreach($files as $file) {
    4. echo $file;
    5. }
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.589
    Симпатии:
    1.763
    Ну точка и две точки - это, соответственно, текущая директория и родительская директория. Это такие, как бы сказать, псевдонимы от ОС (есть и на винде, и на линуксе и на маке). А дальше, то, что ты показываешь - это алфавитный порядок, да.

    Тут нужно учесть, что когда сортируются строки, сравниваются не числа, а именно цифры, сначала по первой цифре, если первая совпадает - по второй цифре и т.п. Поэтому и получается, что 23 идёт перед 30. А если будут буквы, то порядок будет нормальный.

    Единственное, для букв не из стандартной латиницы порядок может быть другой, потому что коды другие. В принципе, если в папке русские буквы, а особенно украинские или белорусские, то может быть неожиданный результат из-за особенностей utf8. Но думаю, что в такие тонкости тебе рановато вникать.
     
    yanuzay нравится это.
  3. yanuzay

    yanuzay Активный пользователь

    С нами с:
    28 мар 2018
    Сообщения:
    503
    Симпатии:
    58
    думаю вы отпечатались и хотели написать 23 идёт перед 3 и перед 4


    То есть 23.txt идёт перед 3.txt и перед 4.txt
     
  4. dcc0

    dcc0 Активный пользователь

    С нами с:
    27 июн 2014
    Сообщения:
    217
    Симпатии:
    4
    Если необязательно на чистом PHP и у Вас Linux, то можно так:

    Код (Text):
    1. <?php
    2. echo shell_exec("ls | sort");
    3. ?>
     
  5. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.861
    Симпатии:
    752
    Адрес:
    Татарстан
    natsort() — встроенная функция в PHP, которая сортирует массив с использованием алгоритма «естественного порядка
     
    [vs] и mkramer нравится это.