A15115071701
A15115071701
采纳率50%
2015-07-29 13:52

关于遍历文件夹的几个问题

已采纳

function get_files($dir) {
$files = array();

if(!is_dir($dir)) {
    return $files;
}

$handle = opendir($dir);
if($handle){
    while(false !== ($file = readdir($handle))){
        if ($file != '.' && $file != '..') {
            $filename = $dir . "/"  . $file;

            if(is_file($filename)) {
                $files[] = $filename;
               }else {
                $dir_files = get_files($filename);
                $files = array_merge($files, $dir_files);//$files不是已经置空了吗
            }
        }
    }
    closedir($handle);
}
return $files;

}

这个函数的执行过程中,当遍历到文件夹时,$files不是已经置空了吗,为什么打印出来还有之前遍历的文件或文件夹的路径呢??

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • xianbu 晓布 6年前

    图片说明

    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 6年前

    $files[] = $filename;
    怎么让数组等于单个字符串呢

    点赞 1 评论 复制链接分享
  • xianbu 晓布 6年前

    图片说明这里有段跟你类似的代码,里面有递归的具体流程分析,你可以看看

    点赞 评论 复制链接分享
  • xianbu 晓布 6年前

    <?php

    $str="E:/guagua/text/1";

    function get_files($dir) {
    //定义一个数组
    $files = array();

    //判断当前是否是一个文件夹
    if(!is_dir($dir)) {
        return $files;
    }
    

    //打开一个文件夹得到一个资源
    $handle = opendir($dir);
    if($handle){

        while(false !==($file = readdir($handle))){
    
            if ($file != '.' && $file != '..') {
    
                //filename补充完整了整个路径
                $filename = $dir . "/"  . $file;
    
                if(is_file($filename)) {
    
                    //将完整路径存入$files数组中
                    $files[] = $filename;
                }else {
    
                    //开始递归循环
                    $dir_files = get_files($filename);
    
                    //将最后一次返回的数据与倒数第二次数组合并得到新数组,依次类推
                    //只会执行30-40行的代码,所以你说的$files = array();是不存在的
                    $files = array_merge($files, $dir_files);
                }
            }
        }
        closedir($handle);
    }
    return $files;
    

    }
    var_dump(get_files($str));

    //array(2) { [0]=> string(28) "E:/guagua/text/1/2/3/4/4.txt" [1]=> string(25) "E:/guagua/text/1/text.php" }

    点赞 评论 复制链接分享

相关推荐