2017-05-26 224 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();返回$ ret':是否有這個'method'需要這個變量的原因? – eeya

+0

好點,我將在一秒內更改我的代碼,基本上,$ ret變量將是將保存所有文件的數組,並且這需要由函數返回。請查看更新的代碼 –

回答

0

它返回null因爲代碼的執行在這裏停止

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

這主要是因爲你可以放置一個給定的$path值可能是一個空的[目錄]的意思,沒有[文件]或[目錄]。

你的方法listDirectory將返回array如果有$path實際上是包含無論是filedirectory目錄。

如果需要,您可以先添加另一個驗證,然後再調用scandir方法。

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

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

希望這有助於您的情況。

+0

非常感謝eeya,我更改了我的代碼,但仍然無法工作,請查看更新的代碼。 –

+0

當你調試該方法時,你得到了什麼結果? '的var_dump(listDirectory($ PATH));退出;' – 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); 
} 
相關問題