[原创] Tips: 两种目录遍历的方法

来源:互联网 发布:数据库空间 编辑:程序博客网 时间:2024/05/22 20:09


目录的遍历是个老问题,主要用在目录遍历类操作,比如删除、统计磁盘占用等等情况。目录就是一个典型的树形结构,递归是最简单的方法了。

function ErgodicDirectory1($dir) {
    
$dp = opendir($dir);
    
while ($file = readdir($dp)) {    
        
if ($file!='.' && $file!='..') {
            
$path = $dir ."/". $file;
            
if (is_dir($path)) {
                
echo "目录:" .$path. chr(10);
                ErgodicDirectory1(
$path);
            } 
else {
                
echo "文件:" .$path. chr(10);
            }
        }        
    }
    
closedir($dp);
}    

 

利用一个栈来递归消除:

function ErgodicDirectory2($dir) {
    
$stack = array($dir);
    
while (!empty($stack)) {
        
$curr_dir = array_pop($stack);        
        
if ($dp = opendir($curr_dir)) {
            
while (($file = readdir($dp))) {
                
if ($file!='.' && $file!='..') {
                    
$curr_file = "$curr_dir/$file";
                    
if (is_dir($curr_file)) {    
                        
echo "目录:". $curr_file . chr(10);                    
                        
$stack[] = $curr_file;
                    } 
else {
                        
echo "文件:". $curr_file . chr(10);
                    }
                }
            }
            
closedir($dp);
        }        
    }
}

 

 




原创粉丝点击