切换风格

Wizard Sky California Sunset glow Black Cloud Beige Dragon Lavender NewYear City Snow Flowers London
收藏本站XSS平台字符串转换jsfuck
怎样无限遍历目录[复制链接]
发表于 2013-6-6 14:21:46 | 显示全部楼层 |!read_mode!
<?php 
$arr=scandir("c:/");

foreach ($arr as $v) 
{
   if (is_dir("c:/".$v))
     echo $v."<br>"; 
     }	;

?>

上面代码是可以遍历目录      
但不知道怎样实现   无限遍历目录  
就是  遍历出来的是目录  然后再继续遍历,,求实现代码及思路


发表于 2013-6-7 01:05:19 | 显示全部楼层
本帖最后由 王子不是我 于 2013-6-7 08:32 编辑

你的这段代码  只能遍历  一层    不知道 无限遍历 是 什么 意思 不过 要想 遍历多层目录 要通过   递归的方式 来遍历   大体 的思路 是这样子的   或者 你可以画个图 来看看      A 目录下 有  B 目录和 C目录    和  D  文件  B 目录下 有  E 目录和  F 文件  那么 遍历的时候 首先进入 A目录底下  发现B 是一个目录 (A这一层 未处理完毕的 先入栈)  进入B  目录  发现  E目录和F 文件  那么  进入E目录  (B目录未处理完的 入栈)   因为E目录底下没有任何东西(出栈) 所以 程序  退回 B 目录 继续执行   发现 B 目录下 没有目录了   退回 A 目录  发现  还有 C目录 和 D 文件  。。。。。。。。。就这样  如此反复



总得来说    递归 是一个  入栈 再出栈的  过程  



你的 这段 代码  要这么写   




<?php
        $dir="c:/";
        if_dir($dir);
        function if_dir($dirname){
                $handler = opendir($dirname);
                while($subdir = readdir($handler)){
                        //$filename = $dirname."/".$subdir;
                        if($subdir != '.'  && $subdir != '..'){
                                $filename = $dirname."/".$subdir;
                                if(is_dir($filename)){
                                        echo "dirname is :".$filename."\n";
                                        if_dir($filename);
                                }               
                        }
                }

        }

?>



最好在控制台下 运行 这段 程序  估计网页显示的话得挂掉
发表于 2013-6-7 08:34:27 | 显示全部楼层
蜀山野鬼 发表于 2013-6-7 01:05
你的这段代码  只能遍历  一层    不知道 无限遍历 是 什么 意思 不过 要想 遍历多层目录 要通过   递归的方 ...

if($subdir != '.'  && $subdir != '..')
这个判断是干什么用的,,》
发表于 2013-6-7 09:08:20 | 显示全部楼层
王子不是我 发表于 2013-6-7 08:34
if($subdir != '.'  && $subdir != '..')
这个判断是干什么用的,,》

哎呀  这可是   关键的 关键啊   


你进入   命令 提示符  打一个  dir 命令  看看   是不是    开头的  两个 东西  是  . (当前目录)  和 ..  (上级目录)    假如你进入 .  目录   .目录中  还有 .  和  ..   再进.    。。。。。。。如此反复 会进入死循环        如果是递归删除的话  一定要将 这.  和 .. 首先剔除   要不  会把整个盘符的内容都给删除干净



发表于 2013-6-7 10:59:44 | 显示全部楼层
递归 啊 递归。
发表于 2013-6-10 16:16:14 | 显示全部楼层
回调函数!!!????????
发表于 2013-6-12 18:38:02 | 显示全部楼层
nani 发表于 2013-6-10 16:16
回调函数!!!????????

递归函数。:)

代码区

GMT+8, 2019-11-21 04:33

Powered by Discuz! X2

© 2001-2018 Comsenz Inc.

回顶部