如果目录很多,推荐队列方式,递归方式会慢,慢的原因:递归的实现是通过调用函数本身,函数调用的时候,每次调用时要做地址保存,参数传递等
<?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;