我想用一個遞歸函數來查看通過子目錄列表的只有文件名以「mp4」結尾的數組。PHP只打印返回數組的最後一個元素
當我在return語句之前打印數組中的元素時,該數組顯示了所有元素, foreach循環。但是,當我從方法的返回中創建一個變量並嘗試再次遍歷它時,我只收到數組中的最後一個條目。
這可能是由循環中的遞歸引起的?
我的代碼如下:
<?php
function listFolderFiles($dir){
$array = array();
$ffs = scandir($dir);
foreach($ffs as $ff){
if($ff != '.' && $ff != '..'){
// This successfully adds to the array.
if(substr($ff, -3) == "mp4"){
$array[] = $ff;
}
// This steps to the next subdirectory.
if(is_dir($dir.'/'.$ff)){
listFolderFiles($dir.'/'.$ff);
}
}
}
// At this point if I insert a foreach loop,
// all of the elements will display properly
return $array;
}
// The new '$array' variable now only includes the
// last entry in the array in the function
$array = listFolderFiles("./ads/");
foreach($array as $item){
echo $item."<p>";
}
?>
任何幫助,將不勝感激!我爲這種sl ap行爲表示歉意。我是PHP新手。
在此先感謝!
當你進行遞歸調用時,你不會對它的返回值做任何事情。 – Barmar 2014-09-10 20:21:11
我敢打賭,所有'.mp4'文件都在一個子目錄中,而不是頂層目錄。 – Barmar 2014-09-10 20:21:41
它適用於我:) – 2014-09-10 20:23:30