За последние 24 часа нас посетили 17647 программистов и 1919 роботов. Сейчас ищут 1049 программистов ...

Собрать массив (структура папок и файлов)

Тема в разделе "PHP для новичков", создана пользователем mr.akv, 12 апр 2016.

  1. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    В общем чего-то я не догоняю элементарную вещь. Мне нужно получить структуру папок и файлов в определённой директории. Что есть сейчас:
    PHP:
    1. <?php
    2.  
    3. function getArr($folder) {
    4.     $files = scandir($folder);
    5.     foreach($files as $file) {
    6.       if (($file == '.') || ($file == '..')) {
    7.             continue;
    8.         }
    9.         $fullPath = $folder.'/'.$file;
    10.  
    11.       if (is_dir($fullPath)) {
    12.             $arr[] = $file;
    13.             getArr($fullPath);
    14.         }
    15.       else {
    16.             $arr[] = $file;
    17.         }
    18.     }
    19.   }
    20.   getArr("./../");
    Идея такова: сканирую директорию, если файл - записываю имя в массив, если папка - записываю имя в массив, а вот дальше нужно просканировать эту папку. Просканировать фигня, а вот как записать в массив, чтобы он (при вложенности папок, допустим folder=>folder1=>folder2) получился вида $arr[folder][folder1]?
     
  2. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    подумай над передачей по ссылке. как её тут можно применить?
     
  3. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Хоть убей, не понимаю. Походу я в какое-то другое русло думаю
     
  4. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а всё же проще... нафиг передачу по ссылке. возвращай массив!
     
    mr.akv нравится это.
  5. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Вот в том и загвоздка. Как сделать 2 уровня вложенности - я понимаю. А вот больше - никак не допрет до меня
     
  6. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Ну ты меня прям расстраиваешь сейчас...
    function scan(path)
    tmp = []
    d = opendir(path)
    while (f = readdir(d))
    if (is_dir(path.f)) tmp[f] = scan(path.f)
    if (is_file(path.f) tmp[f] = true
    endwhile
    return tmp
    endfunction

    tree = scan(/)
    var_dump(tree)

    идея ясна?
     
    mr.akv нравится это.
  7. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
    Мне кажется все потому что твоя функция ничего не возвращает и по идее, даже первый уровень бесполезен, а что уж говорить о рекурсии.
     
  8. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    Емае, два дня понадобилось, чтобы во сне придти к пониманию сего действа. Я не с той стороны думал даже.
    Теперь буду за компом - напишу.
    Спасибо, Ганзал!