php — получить список имен первых дочерних каталогов

Как получить список имен первых дочерних каталогов внутри каталога?

Вот пример дерева:

dir /
    dir_first a /
                  dir second aa
                  dir second ab
                  dir second ac                 
    dir_first b /
                  dir second ba
                  dir second bb
                  dir second bc 
    dir first c /
                  dir second ca
                  dir second cb
                  dir second cc 

Я нашел способ перебора каталога здесь, но здесь также перечислены все дочерние элементы второго уровня, а также их полные пути. , а мне нужно только имя каталога, например dir_first a и т. д.:

$iterator = new RecursiveIteratorIterator(
                new RecursiveDirectoryIterator($dir_path), 
            RecursiveIteratorIterator::SELF_FIRST);

foreach($iterator as $file) {
    if($file->isDir()) {
        echo $file->getRealpath();
    }
}

person Ari    schedule 04.09.2015    source источник
comment
Если я правильно понимаю ваш вопрос и вам нужно то же самое, что выводится прямо сейчас, но без полного пути - используйте базовое имя. echo basename($file->getRealpath());   -  person DannyPhantom    schedule 04.09.2015
comment
разве он не выведет последние или, в данном случае, каталоги второго уровня?   -  person Ari    schedule 04.09.2015
comment
так что вам нужны только dir_first a, dir_first b и т. д.?   -  person DannyPhantom    schedule 04.09.2015
comment
stackoverflow.com/questions/4202175/ Тогда это то, что вам нужно   -  person DannyPhantom    schedule 04.09.2015
comment
Вам нужно только использовать RecursiveDirectoryIterator   -  person ElefantPhace    schedule 04.09.2015


Ответы (1)


glob позволяет ввести путь, а затем использовать флаг для возврата только каталогов.

$files = glob('mydir/*',GLOB_ONLYDIR);
var_dump($files);
person user2182349    schedule 04.09.2015
comment
о да! это! есть ли способ выбрать порядок вывода? Я имею в виду восходящий или нисходящий? Я по-прежнему предпочитаю использовать RecursiveDirectoryIterator, но соглашусь, если это единственный способ. - person Ari; 04.09.2015
comment
GLOB_NOSORT вернет файлы в порядке, указанном в каталоге. Если это не работает так, как вы хотите, вы можете использовать функции сортировки PHP. - person user2182349; 04.09.2015