2017-05-26 10 views
0

次の関数を使用して、フォルダとサブフォルダ内のすべてのファイルを取得しようとしていますが、結果が返されない理由はわかりません。現在のディレクトリとサブディレクトリからすべてのファイルを取得します

function listDirectory($path){ 
    $ret = array(); 
    function listFolderFiles($dir){ 
     global $ret; 
     if (is_dir($dir) !== true) { 
      return false; 
     } 
     $ffs = scandir($dir); 
     unset($ffs[array_search('.', $ffs, true)]); 
     unset($ffs[array_search('..', $ffs, true)]); 

     foreach($ffs as $ff){ 
      $ret[] = $ff; 
      if(is_dir($ff)) { 
       listFolderFiles($dir.'/'.$ff); 
      } 
     } 
     return $ret; 
    } 
    listFolderFiles($path); 
    return $ret; 
} 
+1

'$ ret = array(); return $ ret':この 'method'にこの変数が必要な理由はありますか? – eeya

+0

良い点、私は秒で私のコードを変更します、基本的に、$ ret変数は、すべてのファイルを保持する配列になります、そして、これは関数によって返される必要があります。更新されたコードを見てください –

答えて

0

コードの実行は、ここで

if (count($ffs) < 1) { 
    return; 
} 

あなたは、与えられた$path値は空の[ディレクトリ]の意味であるかもしれない何の[ファイルを配置していないかもしれませんしましたので、これは主であるに停止するためそれはnullを返します。 ]または[ディレクトリ]を選択します。

与え$pathが実際filedirectoryのいずれかを含むディレクトリである場合arrayを返しますlistDirectoryあなたの方法。

最初にscandirメソッドを呼び出す前に、別の検証を追加できます。

function listFolderFiles($dir) { 
    global $ret; 
    if (is_dir($dir) !== true) { 
     return false; 
    } 

    $ffs = scandir($dir); 
    // Rest of code 
} 

ご希望の場合は、こちらをご覧ください。

+0

ありがとう、私は私のコードを変更しましたが、まだ動作しません、更新されたコードを見てください。 –

+0

そのメソッドをデバッグしたときに得た 'result'は何ですか? 'var_dump(listDirectory($ path)); exit; ' – eeya

+0

ディレクトリ配列内のフォール・ファイルとフォルダーの配列(758) –

0

ご協力いただきありがとうございます。

var_dump(listDirectory("../../../../wp-content/uploads/"));exit; 
function listDirectory($path){ 
    //var_dump($path);exit; 
    if(!file_exists ($path)) { 
     var_dump("File doesn't exist");exit; 
    } 
    $ret = array(); 
    function listFolderFiles($dir){ 
     global $ret; 
     if (is_dir($dir) !== true) { 
      return false; 
     } 
     $ffs = scandir($dir); 
     unset($ffs[array_search('.', $ffs, true)]); 
     unset($ffs[array_search('..', $ffs, true)]); 
     foreach($ffs as $ff){ 
      if(is_dir($dir.'/'.$ff)) { 
       listFolderFiles($dir.'/'.$ff); 
      } else { 
       $ret[] = $ff; 
      } 
     } 
     return $ret; 
    } 
    return listFolderFiles($path); 
} 
関連する問題