用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(); ?>
能且仅能遍历当前目前下所有的文件及文件夹。
One comment