在foreach循环中使用array_push()。

时间:2014-04-17 09:37:15

标签: php arrays

<?php

$files = array();

function listFolderFiles($dir, &$files){
    $ffs = scandir($dir);

    foreach($ffs as $ff){
        if($ff != '.' && $ff != '..'){
            if(is_dir($dir.'/'.$ff)) listFolderFiles($dir.'/'.$ff);
            else array_push($files, array('file' => $dir.'/'.$ff, 'hash' => hash_file('md5', $dir.'/'.$ff)));
        }

    }
}
listFolderFiles('/var/www', $files);
var_dump($files);

?>

$dir.'/'.$ff返回我想要的所有信息。但是当我使用数组推送时,它只返回array的9个元素。我可以解决这个问题吗?我做错了什么?

1 个答案:

答案 0 :(得分:2)

你没有通过递归传递$files数组:

if (is_dir($dir.'/'.$ff)) {
    listFolderFiles($dir.'/'.$ff, $files);
                                  ^^^^^^
} ...