php佇列方式和遞迴方式遍歷目錄檔案及子目錄
如果目錄很多,推薦佇列方式,遞迴方式會慢,慢的原因:遞迴的實現是通過呼叫函式本身,函式呼叫的時候,每次呼叫時要做地址儲存,引數傳遞等
- <?php
- //遞迴方式
- function read_dir($dir){
- $files=array();
- $dir_list=scandir($dir);
- foreach($dir_listas$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
- }
- }
- closedir($handle);
- }
- return$files;
- }
- print_r(read_dir_queue('D:/webroot/suanfa/dir'));exit;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<?php
$num =0; //用來記錄目錄下的檔案個數
$dirname = 'LAMP' ; //要遍歷的目錄名字
$dir_handle =opendir( $dirname );
echo '<table
border="1" align="center" width="960px" cellspacing="0" cellpadding="0">' ;
|