2014-10-20 78 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