递归列出目录中的文件

时间:2013-11-21 15:39:44

标签: php file recursion

我想获得目录及其所有子目录中所有文件的列表。 我已经制作了以下代码,但我不明白为什么它一直给我一个空数组。 就像array_merge没有合并我的东西一样。

public static function get_all_files($dir) {
    $array_files = array();
    $files = scandir($dir);
    foreach ($files as $file) {
      if ($file == '.' || $file == '..') continue;
      if (is_dir($dir.'/'.$file)) array_merge($array_files, self::get_all_files($dir.'/'.$file));
      else $array_files[] = $file;
    }
    return $array_files;
}

我期待的回报是这样的数组:

array('file_1', 'file_2', 'file_3, ...)

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

array_merge返回合并的数组,因此您需要执行以下操作:

$array_files = array_merge($array_files, self::get_all_files($dir.'/'.$file));