PHP 遍历文件夹

释放双眼,带上耳机,听听看~!

PHP遍历文件夹

封装一个遍历文件夹函数

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

代码实现


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
1<?php
2echo "<pre>";
3print_r(traverseDir('./ErrorFiles'));
4/**
5 * 遍历指定路径的文件夹中的文件
6 * @param $dirPath 文件绝对路径
7 * @param $type 遍历方法 默认参数为 $type='all' 返回所有文件作为一维数组返回,如果$type='file',则与多维数组返回
8 * @return array 检索到文件成功返回内部文件路径数组,失败返回false;
9 */
10function traverseDir($dirPath=false,$type='all'){
11    //检测是否为文件夹
12    if(!$dirPath||!is_dir($dirPath)){
13        return false;
14    }
15    $files = array();
16
17    //增加一个@抑制错误
18    if(@$handle = opendir($dirPath)){
19       while(($file=readdir($handle))!==false){
20           //排除'.'当前目录和'..'上级目录
21           if($file != '..' && $file != '.'){
22               //只记录文件
23               if($type == 'file'){
24                   if(is_dir($dirPath.DIRECTORY_SEPARATOR.$file)){
25                       //如果是文件夹,则重新遍历该文件的文件
26                       $files[$file] = traverseDir($dirPath.DIRECTORY_SEPARATOR.$file,'file');
27                       //把文件存入数组中
28                        foreach($files[$file] as $k => $v){
29                            if(is_file($v)){
30                                $files[] = $v;
31                                //删除源数组中的对应文件路径
32                                unset($files[$file][$k]);
33                            }
34                        }
35
36                       //删除源数组中的对应文件路径数组
37                       unset($files[$file]);
38                   }else{
39                       //如果是文件则直接存入数组
40                       $files[] = $dirPath.DIRECTORY_SEPARATOR.$file;
41                   }
42               }else{//记录含文件
43                    if(is_dir($dirPath.DIRECTORY_SEPARATOR.$file)){
44                        //如果是文件夹,则重新遍历该文件的文件
45                        $files[$file] = traverseDir($dirPath.DIRECTORY_SEPARATOR.$file);
46                    }else{
47                        //如果是文件则直接存入数组
48                        $files[] = $dirPath.DIRECTORY_SEPARATOR.$file;
49                    }
50               }
51           }
52       }
53      closedir($handle);
54    }
55    return $files;
56}
57
58
59
60
61
62
63

文件结构

PHP 遍历文件夹

读取结果

  • 默认读取为多维数组 traverseDir('./ErrorFiles');

PHP 遍历文件夹

  • 一维数组读取结果 traverseDir('./ErrorFiles','file');

PHP 遍历文件夹

给TA打赏
共{{data.count}}人
人已打赏
安全技术

C++ explicit关键字

2022-1-11 12:36:11

安全资讯

0糖饮料、半成品菜爆火 天猫发布食品十大趋势:全是百亿新赛道

2021-8-16 15:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索