当前位置:爱推吧 » php教程 » php遍历输出父目录下所有子目录的2种方法

php遍历输出父目录下所有子目录的2种方法

用php遍历输出父目录下的所有子目录的方法从网上找到了2种,与大家分享一下,不过有个问题,只能遍历当前目录下面的目录。

方法一:

//php获取当前目录下所有的子目录
<?php
$dirs = listdir("你要遍历输出的目录名"); 
foreach($dirs as $dir){ 
 echo $dir.'<br>'; 
} 
function listdir($dir){ 
 if ($handle = opendir($dir)){ 
 $output = array(); 
 while (false !== ($item = readdir($handle))){ 
 if (is_dir($dir.'/'.$item) and $item != "." and $item != ".."){ 
 $output[] = $dir.'/'.$item; 
 $output = array_merge($output, ListDescendantDirectories($dir.'/'.$item)); 
 } 
 } 
 closedir($handle); 
 return $output; 
 }else{ 
 return false; 
 } 
}
function ListDescendantDirectories($dir) 
{ 
 if ($handle = opendir($dir)) 
 { 
 $output = array(); 
 while (false !== ($item = readdir($handle))) 
 { 
 if (is_dir($dir.'/'.$item) and $item != "." and $item != "..") 
 { 
 $output[] = $dir.'/'.$item; 
 $output = array_merge($output, ListDescendantDirectories($dir.'/'.$item)); 
 } 
 } 
 closedir($handle); 
 return $output; 
 } 
 else 
 { 
 return false; 
 } 
} 
?>

方法二:

//遍历当前目录
<?php
$dir="你要遍历输出的目录名";
function myscandir($dir){
set_time_limit(5);
 foreach(scandir($dir) as $v){ //scandir() 遍历指定目录,只会遍历一级目录
 if(is_dir($dir.'/'.$v)){
 if($v == '.' || $v=='..') continue;
 myscandir($dir.'/'.$v);
 }
 echo $v.'<br />';
 }
}
myscandir($dir);
?>

2015年12月19日补充:

<?php //遍历当前目录
function get_dir_scandir(){ 
$tree = array(); 
foreach(scandir('./') as $single){ 
echo $single."<br/>\r\n"; 
} 
} 
get_dir_scandir();
?>

能且仅能遍历当前目前下所有的文件及文件夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注