2015-09-04 2 views
0

Как получить список первых имен дочерних каталогов внутри каталога?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 

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

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

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

Если я правильно понял ваш вопрос права, и вам нужно то же самое, что есть выход прямо сейчас, но без полного пути - используйте [базовое имя] (http://php.net/manual/en/function.basename.php). 'echo basename ($ file-> getRealpath());' – DannyPhantom

+0

: не выводит ли последний или в этом случае каталоги второго уровня? – KeepMove

+0

, так что вам нужно только dir_first a, dir_first b и т. Д.? – DannyPhantom

ответ

1

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

$files = glob('mydir/*',GLOB_ONLYDIR); 
var_dump($files); 
+0

o, да! то есть! есть ли способ выбрать порядок вывода? Я имею в виду восходящий или нисходящий? Я по-прежнему предпочитаю использовать «RecursiveDirectoryIterator», но я соглашусь с этим, если это единственный способ. – KeepMove

+0

GLOB_NOSORT вернет файлы в порядке, указанном в каталоге. Если это не работает так, как вы этого хотите, вы можете использовать функции сортировки PHP. – user2182349

Смежные вопросы