2016-08-28 21 views

答えて

3

私のWebサイトでも同じ機能を作成しなければならなかったので、私は参照として機能を投稿します。

function recursiveFileSearch($path, $searchmask = "*") { 
    $path = rtrim($path, '/'); 

    $files = array(); 
    if(is_array($searchmask)) { 
     for($i = 0; $i < count($searchmask); $i++) { 
      $files = array_merge($files, glob($path.'/'.$searchmask[$i])); 
     } 
     sort($files); 
    } else { 
     $files = glob($path.'/'.$searchmask); 
    } 


    $dirs = glob($path.'/*', GLOB_ONLYDIR); 
    foreach($dirs as $dir) { 
     if(is_dir($dir)) { 
      $files = array_merge($files, recursiveFileSearch($dir, $searchmask)); 
     } 
    } 

    sort($files); 
    return $files; 
} 
+0

ありがとう!私はこの解決策を試みます! – WWWWWWWWWP

2

あなたが尋ねていることは100%確信していませんが、scandir documentationを見ると、最初のコメントには非常に便利な再帰スキャン機能があります。

<?php 
function dirToArray($dir) { 

     $result = array(); 

     $cdir = scandir($dir); 
     foreach ($cdir as $key => $value) 
     { 
     if (!in_array($value,array(".",".."))) 
     { 
      if (is_dir($dir . DIRECTORY_SEPARATOR . $value)) 
      { 
       $result[$value] = dirToArray($dir . DIRECTORY_SEPARATOR . $value); 
      } 
      else 
      { 
       $result[] = $value; 
      } 
     } 
     } 

     return $result; 
    } 
?> 

結果の形式は次のとおりです。

Array 
( 
    [subdir1] => Array 
    ( 
    [0] => file1.txt 
    [subsubdir] => Array 
    ( 
     [0] => file2.txt 
     [1] => file3.txt 
    ) 
) 
    [subdir2] => Array 
    ( 
    [0] => file4.txt 
    } 
) 
+0

@HurricaneDevelopment thanks man! :) – WWWWWWWWWP

関連する問題