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;  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章