| 域名空间 下载中心 社区论坛 信息公告 my小屋 |
![]() |
联系我们 设为首页 加入收藏 |
|
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿 论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图 专题 | 应用软件 | 聊天通讯 | q q 专栏 | 建站经验 | 在线工具 | 站长club | 注 册 表 | 旧版 社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务 |
| 新版上线![旧版] | |||||
注:打开慢时请稍等
[讨论]一个目录遍历问题,请大家讨论一下。顺便散点分http://www.iyit.net 日期:2006-10-6 15:35:47 来源:iyit.net收集 点击: |
<?php function dirtree($path=".") { echo "<dl>"; $d = dir($path); while($v = $d->read()) { if($v == "." ¦ ¦ $v == "..") continue; $file = $d->path."/".$v; echo "<dt>$v"; if(is_dir($file)) dirtree($file); } $d->close(); echo "</dl>"; } dirtree(); ?> 这个函数可以正常显示树状的目录。 现在的问题是:若某子目录或文件名为“0”时,则不会显示。请问如何解决? 例:./a/0/xxx.txt 则不会输出xxx.txt --------------------------------------------------------------- 是否应该把0赋给一个变量来代替呢? --------------------------------------------------------------- <?php function dirtree($path="./test") { echo "<dl>"; $d = dir($path); while(false !== ($v = $d->read())) { if($v == "." ¦ ¦ $v == "..") continue; $file = $d->path."/".$v; echo "<dt>$v"; if(is_dir($file)) dirtree($file); } $d->close(); echo "</dl>"; } dirtree(); ?> --------------------------------------------------------------- 又是0==false的原因 :( 谢谢唠叨和鸟的代码,真是精益求精...拜服一哈 --------------------------------------------------------------- 问题解决了 :) --------------------------------------------------------------- 这个问题以前一直忽略了,没想到真的是没想到。问题有趣,解得干净,good. --------------------------------------------------------------- 学习 --------------------------------------------------------------- 记下 --------------------------------------------------------------- 现在明白为什么手册上的例子要写成while(false!==($entry = $d->read()))了,原来就是防止0==false的出现呀。 --------------------------------------------------------------- 嗯!非常同意! ===是值和类型都相等才等,否则2.3=="2.3abc"就会为真了,而===才为假 --------------------------------------------------------------- 这个东东太经典了,我修改了一下就可以用作影视总目录了 <?php function dirtree($path=".") { echo "<dl>"; $d = dir($path); while(false !== ($v = $d->read())) { if($v == "." ¦ ¦ $v == "..") continue; $file = $d->path."/".$v; if(is_dir($file)) { echo "<dt><a href=$file target=\"_blank\">$v</a>"; dirtree($file); } else echo "<dt>$v"; } $d->close(); echo "</dl>"; } dirtree("f:\video"); ?> 但是$path 如果是ftp的地址,这个东东就不好用了,是不是我的ftp server 没设置好啊? --------------------------------------------------------------- 知识最终要,分也不能丢。 --------------------------------------------------------------- 这个问题好得很,有趣。 --------------------------------------------------------------- to ustcfrank(阿卡波糖) 可能不能用于远程连接。 --------------------------------------------------------------- 呵呵,这样就ok 了,真笨 if(is_dir($file)) { echo "<dt><a href=\"ftp://10.0.168.14\"" . "$file target=\"_blank\">$v</a>"; dirtree($file); } else echo "<dt>$v"; --------------------------------------------------------------- 这个问题以前我也遇到过 经典!收了! --------------------------------------------------------------- 收藏 学习 遍历目录如此简洁 --------------------------------------------------------------- 好象还是有问题,我现在改成 if(is_dir($file)) { $p=substr($file,strlen($path)); echo "<dt><a href=\"ftp://10.0.168.14$p $v</a>"; dirtree($file); } else echo "<dt>$v"; 用dirtree("f:\video");调用,第一级子目录没问题,但多级子目录就有问题了,是因为递归的原因 --------------------------------------------------------------- good --------------------------------------------------------------- 我水平还不够,不过要散分倒是最好的对象。 --------------------------------------------------------------- 收藏 --------------------------------------------------------------- 又学着了,呵呵 --------------------------------------------------------------- 我修改的显示ftp上总目录的版本,这回好用了 <?php function dirtree($path=".") { echo "<dl>"; $d = dir($path); while(false !== ($v = $d->read())) { if($v == "." ¦ ¦ $v == "..") continue; $file = $d->path."/".$v; if(is_dir($file)) { $fileshow=$file; $fileshow=escapeshellcmd($file); $fileshow=substr($file,8); //"8"是"f:\video"的长度。 echo "<dt><a href=ftp://10.0.168.14$fileshow target=\"_blank\">$v</a>"; dirtree($file); } else echo "<dt>$v"; } $d->close(); echo "</dl>"; } dirtree("f:\video"); ?> --------------------------------------------------------------- 呵呵,谁再加个js变成个类似资源管理器的东东吧?偶js很差,有心无力 --------------------------------------------------------------- 不错! --------------------------------------------------------------- 经典,值得收藏! --------------------------------------------------------------- to: okdw(零零发财) 支持你的说法!哪位给个js出来啊!关注中! --------------------------------------------------------------- 大家注意,我又发现了错误 我修改代码的目标是:如果$file是dir的话,就加个链接,可是我的代码中又发现错误: 如果文件夹的名字有空格的话,链接就不能正确显示,比如有个文件夹的名字是"for test" 则echo "<dt><a href=$file target=\"_blank\">$v</a>"; 产生的输出是<a href=f:\video/for test target="_blank">for test</a> 这时点击链接,只能链到f:/video/for ,而test丢掉了,自然连不上 修改这个错误的方法是把 echo "<dt><a href=$file target=\"_blank\">$v</a>"; 改为 echo "<dt><a href=\"$file\" target=\"_blank\">$v</a>"; 就好了 --------------------------------------------------------------- 呵呵,0和false的关系 <?php $test=0; echo "when test is 0.......<br>"; if ($test=0) { echo "if (test=0) return true <br>"; }else { echo "if (test=0) return false <br>"; } if ($test==0) { echo "if(test==0) return true <br>"; }else { echo "if(test==0) return false <br>"; } if ($test==false) { echo "if(test==false) return true <br>"; }else { echo "if(test==false) return false <br>"; } if ($test===0) { echo "if(test===0) return true <br>"; }else { echo "if(test===0) return false <br>"; } if ($test===false) { echo "if(test===false) return true <br>"; }else { echo "if(test===false) return false <br>"; } if ($test=1) { echo "if(test=1) return true <br>"; }else { echo "if(test=1) return false <br>"; } if (false!==($test=0)) { echo "if(false!==(test=0)) return true <br>"; }else { echo "if(false!==(test=0)) return false <br>"; } ?> --------------------------------------------------------------- 上面的结果:) when test is 0....... if (test=0) return false if(test==0) return true if(test==false) return true if(test===0) return true if(test===false) return false if(test=1) return true if(false!==(test=0)) return true if (test=0){}就意味着恒为伪false,记得以前看到文章里说 if($var=0) {} 可以当做/* */来用^_^ --------------------------------------------------------------- 偶不懂php,接点分吧! --------------------------------------------------------------- up一下 --------------------------------------------------------------- 精品原来是这样炼出来的。 --------------------------------------------------------------- up --------------------------------------------------------------- mark --------------------------------------------------------------- 我一直都对递归函数有一种恐惧心理,老弄不明白到底是哪个调用哪个.郁闷! --------------------------------------------------------------- 接分 --------------------------------------------------------------- up --------------------------------------------------------------- ding --------------------------------------------------------------- up 编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部] 上一篇:一段根据表中日期字段建立的树型目录的代码,有人帮我改成用类来编写吗? 下一篇:如何删除复选框选中的数据库中的记录 转载请注明来源:www.iyit.net 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。 |
| 相关文章 | ||||
| 设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接 |
| |||||||