php高效遍历目录文件及子目录
作者:admin 日期:2018-05-21
PHP代码
- <?php
- //递归方式
- function read_dir($dir){
- $files=array();
- $dir_list=scandir($dir);
- foreach($dir_list as $file){
- if($file!='..' && $file!='.'){
- if(is_dir($dir.'/'.$file)){
- $files[]=read_dir($dir.'/'.$file);
- }else{
- $files[]=$file;
- }
- }
- }
- return $files;
- }
- //队列方式
- function read_dir_queue($dir){
- $files=array();
- $queue=array($dir);
- while($data=each($queue)){
- $path=$data['value'];
- if(is_dir($path) && $handle=opendir($path)){
- while($file=readdir($handle)){
- if($file=='.'||$file=='..') continue;
- $files[] = $real_path=$path.'/'.$file;
- if (is_dir($real_path)) $queue[] = $real_path;
- }
- }
- closedir($handle);
- }
- return $files;
- }
- print_r(read_dir_queue('D:/webroot/suanfa/dir'));exit;
如果目录很多,推荐队列方式,递归方式会慢,慢的原因:递归的实现是通过调用函数本身,函数调用的时候,每次调用时要做地址保存,参数传递等
广告位