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;


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/455.html