2014-10-20 76 views
0

有人可以幫我嗎?我看不到。下面的函數不返回數組。 print_r($list)(在return之上)在屏幕上打印數組。但print_r($files)返回一個空數組....PHP:函數不返回數組

function listFolderFiles($dir){ 
    $ffs = scandir($dir); 
    $i = 0; 
    $list = array(); 
    foreach ($ffs as $ff){ 
     if ($ff != '.' && $ff != '..'){ 
      if (strlen($ff)>=5) { 
       if (substr($ff, -4) == '.mp4') { 
        $value = $dir.'/'.$ff; 
        $list[] = $value; 
       } 
      } 
      if(is_dir($dir.'/'.$ff)) 
        listFolderFiles($dir.'/'.$ff); 
     } 
    } 

    print_r($list); // Returns the full array with values 
    return $list; 
} 
$files = listFolderFiles($_POST['path']); 
print_r($files) // Returns an empty array..... :(:(
+1

那是什麼 ? '($ _ POST( '路徑'))'?一個錯字? '$ _POST ['path']' – Ghost 2014-10-20 07:05:42

+0

我的錯誤,當我發佈該問題時發生了錯字。雖然寫在PHP文件中,但仍然不起作用 – 2014-10-20 07:07:47

+0

我注意到$ list返回一個數組的兩倍......一個已填充,一個爲空。也許它多次符合listFolderFiles? – 2014-10-20 07:09:39

回答

3

您的通話遞歸不處理返回數組:

listFolderFiles($dir.'/'.$ff); 

你需要數組在這裏融合:

$list = array_merge($list, listFolderFiles($dir.'/'.$ff)); 
+0

它仍然沒有工作:(不知何故它仍然返回一個空陣列... – 2014-10-20 07:24:30

+0

@ErikVandeVen我更新了答案,試試這個吧。 – 2014-10-20 07:32:12

+0

謝謝! – 2014-10-20 07:37:17