返回foreach循环中的未定义变量

时间:2015-05-11 16:44:58

标签: php arrays

我想写文件扫描脚本

此脚本必须搜索大量文件夹并从文件中创建列表

我写了这个脚本,但是没有回复

function checkdir($dir) {
    $file_array = array();
   if (is_dir($dir)) {
     $objects = scandir($dir);
     foreach ($objects as $key => $object) {
       if ($object != "." && $object != "..") {
         if (filetype($dir."/".$object) == "dir") {
             // folder loop , try find files again
             checkdir($dir."/".$object);
             //$file_array[] = 'dir';

         } else {
             $file_array[] = $dir."/".$object;
             //echo $dir."/".$object.'<br>';
         }
       }

     }// end foreach
     //reset($objects);
   }
     return $file_array;

}

正如您在else条件中看到的那样,我写了$file_array[] = $dir."/".$object;它的打印值,但无法将值存储到数组中

2 个答案:

答案 0 :(得分:1)

递归调用需要将其结果添加到数组中:

await

整个功能:

$file_array = array_merge($file_array, checkdir($dir."/".$object));

答案 1 :(得分:0)

怎么样:

if ( ! function_exists('glob_recursive')){
    // Does not support flag GLOB_BRACE

    function glob_recursive($pattern, $flags = 0){
        $files = glob($pattern, $flags);

        foreach (glob(dirname($pattern).'/*', GLOB_ONLYDIR|GLOB_NOSORT) as $dir){
            $files = array_merge($files, glob_recursive($dir.'/'.basename($pattern), $flags));
        }

        return $files;
    }
}

?>

这是来自php.net的例子,检查&#34; glob&#34;。