php 遍历目录下所有目录及文件
直接上代码 简单粗暴
<?php
$arr_dir = [];
$path = '.';
//递归读取目录结构到数组中并保存目录结构
function makeDir($path,&$arr)
{
$dir = opendir($path); //返回当前目录的句柄资源
while(($file=readdir($dir))!==FALSE) //遍历 从目录句柄中读取条目
{
if($file!='.'&&$file!='..')
{
if(!is_dir($path.'/'.$file)) //如果当前不是目录
{
$arr[] = $file; //将文件名赋给所属的目录数组
}
else
{
makeDir($path.'/'.$file, $arr[$file]); //递归处理目录 参数1 是要处理的子目录 参数2 定义一个目录的数组
}
}
}
closedir($dir);
}
makeDir($path, $arr_dir);
echo "<pre>";
print_r($arr_dir);
showTable($arr_dir);
function showTable($data,$parent = './',$num = 0){
if(is_array($data)){
foreach ($data as $_k=>$_v){
if(is_array($_v)){
echo "<span style=\"margin-left: $num\">【目录】<a href=''>删除</a> {$parent}{$_k}</span><br/>";
showTable($_v,$parent.$_k.'/',$num+=100);
}else{
$file_num = $num-70;
echo "<span style=\"margin-left: $file_num\">【文件】$_v</span><br/>";
}
}
}
}
delDirAndFile('.');
//循环删除目录和文件函数
function delDirAndFile( $dirName )
{
if ( $handle = opendir( $dirName ) ) {
while ( false !== ( $item = readdir( $handle ) ) ) {
if ( $item != "." && $item != ".." ) {
if ( is_dir( "$dirName/$item" ) ) {
delDirAndFile( "$dirName/$item" );
} else {
echo "<br/>成功删除文件: $dirName/$item";
// if( unlink( "$dirName/$item" ) ){
// echo "成功删除文件: $dirName/$item";
// }
}
}
}
closedir( $handle );
echo "<br/>成功删除目录: $dirName<br/>";
// if( rmdir( $dirName ) ){
// echo "成功删除目录: $dirName\n";
// }
}
}
?>