PHP 遍历文件夹

mac2026-09-27  13

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)