PHP 遍历文件夹

PHP遍历文件夹

封装一个遍历文件夹函数

用于对指定路径的文件夹进行遍历,获取文件夹中的文件路径数组。

代码实现

<?php
echo "<pre>";
print_r(traverseDir('./ErrorFiles'));
/**
 * 遍历指定路径的文件夹中的文件
 * @param $dirPath 文件绝对路径
 * @param $type 遍历方法 默认参数为 $type='all' 返回所有文件作为一维数组返回,如果$type='file',则与多维数组返回
 * @return array 检索到文件成功返回内部文件路径数组,失败返回false;
 */
function traverseDir($dirPath=false,$type='all'){
    //检测是否为文件夹
    if(!$dirPath||!is_dir($dirPath)){
        return false;
    }
    $files = array();

    //增加一个@抑制错误
    if(@$handle = opendir($dirPath)){
       while(($file=readdir($handle))!==false){
           //排除'.'当前目录和'..'上级目录
           if($file != '..' && $file != '.'){
               //只记录文件
               if($type == 'file'){
                   if(is_dir($dirPath.DIRECTORY_SEPARATOR.$file)){
                       //如果是文件夹,则重新遍历该文件的文件
                       $files[$file] = traverseDir($dirPath.DIRECTORY_SEPARATOR.$file,'file');
                       //把文件存入数组中
                        foreach($files[$file] as $k => $v){
                            if(is_file($v)){
                                $files[] = $v;
                                //删除源数组中的对应文件路径
                                unset($files[$file][$k]);
                            }
                        }

                       //删除源数组中的对应文件路径数组
                       unset($files[$file]);
                   }else{
                       //如果是文件则直接存入数组
                       $files[] = $dirPath.DIRECTORY_SEPARATOR.$file;
                   }
               }else{//记录含文件
                    if(is_dir($dirPath.DIRECTORY_SEPARATOR.$file)){
                        //如果是文件夹,则重新遍历该文件的文件
                        $files[$file] = traverseDir($dirPath.DIRECTORY_SEPARATOR.$file);
                    }else{
                        //如果是文件则直接存入数组
                        $files[] = $dirPath.DIRECTORY_SEPARATOR.$file;
                    }
               }
           }
       }
		closedir($handle);
    }
    return $files;
}





文件结构

在这里插入图片描述

读取结果

  • 默认读取为多维数组 traverseDir('./ErrorFiles');
    在这里插入图片描述
  • 一维数组读取结果 traverseDir('./ErrorFiles','file');
    在这里插入图片描述
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值