不管是在工作中还是在面试中,都会遇到遍历一个文件的需求,这里记录一下,封装遍历文件夹中文件和文件夹的函数
<?php
function my_dir($dir) {
$files = array();
//注意这里要加一个@,不然会有warning错误提示:)
if(@$handle = opendir($dir)) {
while(($file = readdir($handle)) !== false) {
if($file != ".." && $file != ".") { //排除根目录;
if(is_dir($dir."/".$file)) {
//如果是子文件夹,就进行递归
$files[$file] = my_dir($dir."/".$file);
} else {
//不是就将文件的名字存入数组;
$files[] = $file;
}
}
}
closedir($handle);
print_r($files);
return $files;
}
}
//输出结果:
Array
(
[0] => aaa.html
)
Array
(
[0] => c.html
[1] => b.html
[abc] =>
)
或者下面的函数,根据需求可以灵活改动
<?php
function my_dir2($dir_path) {
if(is_dir($dir_path)) {
$dirs = opendir($dir_path);
if($dirs) {
while(($file = readdir($dirs)) !== false) {
if($file !== '.' && $file !== '..') {
if(is_dir($file)) {
echo $dir_path . '/' . $file; echo PHP_EOL;
my_dir2($dir_path . '/' . $file);
} else {
echo $dir_path . '/' . $file; echo PHP_EOL;
}
}
}
closedir($dirs);
}
} else {
echo '目录不存在!';
}
}
//输出结果:
/home/www/aaa/bbb/c.html
/home/www/aaa/bbb/b.html
/home/www/aaa/bbb/abc