За последние 24 часа нас посетили 17720 программистов и 1625 роботов. Сейчас ищут 1078 программистов ...

Сортировка вывода файлов по имени.

Тема в разделе "PHP для новичков", создана пользователем Tulku, 2 июн 2008.

  1. Tulku

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

    С нами с:
    3 апр 2008
    Сообщения:
    14
    Симпатии:
    0
    Есть скрипт вывода изображений на страницу из определенной папки. Зарание кол-во и имена не известны. Но есть маленькое упрощение. Имена файлов имеют вид 1.jpg 2.jpg, 3.jpg, 7.jpg.... и так далее.
    PHP:
    1. $i=0;
    2. $in_line=5; //сколько штук в строке
    3.  
    4. $handle_sub = opendir("images/Picture/trumb/$numkod");
    5.  
    6. while ($file_sub = readdir($handle_sub)) {
    7. if (ereg("(.)+\\.(jpg)",$file_sub) AND $file_sub!="".$numkod.".jpg") {
    8.         if($i==0)
    9. echo "<tr>";
    10. $i++;
    11. echo "<td><a target=\"Картинка\" HREF=\"images/Picture/$numkod/$sub_title\"> <img border=\"0\" alt=\"$fnumb\" src=\"images/Picture/trumb/$numkod/$sub_title\" ></a>&nbsp;";
    12.     $count++;
    13.  
    14.     }
    15.     if($i==$in_line){
    16. $i=0;
    17. echo "</tr>";
    18.     }      
    19. }
    20. closedir($handle_sub);
    При этом вывод изображений происходит следующим видом. 10.jpg идет за 1.jpg что не радует. Как можно сделать так чтоб 10 был за 9, а 20 за 19?
    Имя исключенного файла $numkod.jpg представляет собой здоровенное число сгенерированное из даты типа 1212018681.jpg
     
  2. Tulku

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

    С нами с:
    3 апр 2008
    Сообщения:
    14
    Симпатии:
    0
    Огромное спасибо! То что я искал.
     
  3. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    была схожая проблема в SQL, тоже решаемо...

    ORDER BY
    CASE
    WHEN первая буква английская THEN 1
    WHEN первый знак - цифра THEN 2
    ELSE 0
    END,
    `field`

    источник
    http://phpclub.ru/talk/showthread.php?s ... 84&rand=13