2017-09-27 5 views
2

サブディレクトリの最初のレベルだけを配列に取得しようとしています。 誰かがこれを行うよりスリムで速い方法を知っていますか?PHPはサブディレクトリの最初のレベルを配列に入れます

$dirs = new RecursiveDirectoryIterator('myroot', RecursiveDirectoryIterator::SKIP_DOTS); 
    $files = new RecursiveIteratorIterator($dirs, RecursiveIteratorIterator::SELF_FIRST); 

    $dir_array = array(); 
    foreach($files AS $file) 
    {   
     if($files->isDot()) continue; 
     if($files->getDepth() > 0) continue; 

     if($files->isDir()) 
     { 
      $dir_array[] = $file->getFilename(); 
     } 
    } 

答えて

4

このような単純な:

$array = glob('myroot/*', GLOB_ONLYDIR); 

のみベースディレクトリ名ではなく完全なパスを取得するには、次の

$array = array_map('basename', glob('myroot/*', GLOB_ONLYDIR)); 

を1つのリニアレベルでのみ動作http://php.net/glob

+0

を参照してください。 、 右? – Mike

+0

はい、絶対に。既に知っているように、反復的に反復する反復子があります。 – Calimero

+0

okですが、これは上のようなサブディレクトリ名だけの配列ではなく、完全なパスを返します。 – Mike

関連する問題