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"; // } } } ?>