За последние 24 часа нас посетили 20475 программистов и 1093 робота. Сейчас ищут 783 программиста ...

Как определить, является ли директория родительской?

Тема в разделе "PHP для профи", создана пользователем Volonter, 28 апр 2022.

  1. Volonter

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

    С нами с:
    8 авг 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    Москва
    Всем привет! Подскажите, как определить имеет ли директория вложенные директории, при этом файлы должны игнорироваться. Вот код, который возвращает массив директорий
    PHP:
    1. $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator('imagefolder'), RecursiveIteratorIterator::SELF_FIRST);
    2.  
    3. foreach ($iterator as $key => $value) {
    4.     if (!$iterator->isDot()) {
    5.         $results[] = array(
    6.             "key" => $iterator->getBasename(),
    7.             "hasSubDirectories" => ($iterator->callHasChildren()) ? true : false
    8.         );
    9.     }
    10. }
    11.  
    12. $output = array(
    13.     "success" => true,
    14.     "errorCode" => null,
    15.     "errorText" => "",
    16.     "result" => $results
    17. );
    18.  
    19. header("Content-type: application/json");
    20.     echo json_encode($output);
    вот здесь
    PHP:
    1. "hasSubDirectories" =>false
    надо установить true или false в зависимости от наличия дочерних папок. Вложенные файлы игнорируем, учитываем только папки. Заранее спасибо! За примеры кода отдельная благодарность)) Сам что то не осиливаю
     
  2. antoniii

    antoniii Новичок

    С нами с:
    16 мар 2022
    Сообщения:
    417
    Симпатии:
    71
    Попробуй убрать тернарный оператор из
    PHP:
    1. "hasSubDirectories" => ($iterator->callHasChildren()) ? true : false
    оставь
    PHP:
    1. "hasSubDirectories" => $iterator->callHasChildren()
     
  3. Satger

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

    С нами с:
    19 апр 2020
    Сообщения:
    72
    Симпатии:
    1
    Вы чё, реально все охренели?
    glob('*', GLOB_ONLYDIR)
     
    rosss нравится это.
  4. Volonter

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

    С нами с:
    8 авг 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    Москва
    да, именно так и сделал
    PHP:
    1. "hasSubDirectories" => !empty(glob($fileInfo->getPathname().'/*', GLOB_ONLYDIR)) ? true : false
     
  5. Satger

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

    С нами с:
    19 апр 2020
    Сообщения:
    72
    Симпатии:
    1
    Вы написали херню, но это Вам с ней жить.