不管是在工作中還是在面試中,都會遇到遍歷一個文件的需求,這裏記錄一下,封裝遍歷文件夾中文件和文件夾的函數
<?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