За последние 24 часа нас посетили 22679 программистов и 1547 роботов. Сейчас ищут 926 программистов ...

дерево папок через цикл

Тема в разделе "PHP для новичков", создана пользователем zhenia3003, 9 авг 2014.

  1. zhenia3003

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

    С нами с:
    20 авг 2012
    Сообщения:
    184
    Симпатии:
    3
    как вывести название всех подпапок (00001, 00002 и др) из папок papka_1/ papka_2/ papka_3/ ???
    base/papka_1/00001/
    base/papka_1/00002/
    base/papka_1/.../
    base/papka_2/00001/
    base/papka_2/00002/
    base/papka_2/.../
    base/papka_3/00001/
    base/papka_3/00002/
    base/papka_3/.../
     
  2. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.596
    Симпатии:
    1.764
    Через цикл тяжело. Это - классический пример, когда рекурсия оправдана
     
  3. zhenia3003

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

    С нами с:
    20 авг 2012
    Сообщения:
    184
    Симпатии:
    3
    я использую рекурсию, но есть недостаток, выводятся одинаковые папки, как оставить только 1 папку? (в папке 1407314397 лежит 3 файла - папка дублируется 3 раза)
    Код (Text):
    1.  
    2. $it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('base/'));
    3. while($it->valid()) {
    4. echo $it->getSubPath() . "<br>";
    5.  $it->next();
    6. }
    7/1407314397
    7/1407314397
    7/1407314397
    2/1407313996
    2/1407313996
    2/1407313996
    2/1407313892
    2/1407313892
    2/1407313892
    2/1407313892
    1/1407403885
    1/1407403885
    1/1407403885
    1/1407403885
    1/1407313874
    1/1407313874
    1/1407313874
    3/1407313915
    3/1407313915
    3/1407313915
     
  4. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    Вместо echo $it->getSubPath() . "<br>"; делать $arr[$it->getSubPath()] = 1;, а в конце вывести через join("<br>", array_keys($arr));