1
2function dirtree($path=".") {
3echo "
<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 "</dt></dl>
1";
2}
3
4dirtree();
这个函数可以正常显示树状的目录。
现在的问题是:若某子目录或文件名为“0”时,则不会显示。请问如何解决?
例:./a/0/xxx.txt
则不会输出xxx.txt
---------------------------------------------------------------
是否应该把0赋给一个变量来代替呢?
---------------------------------------------------------------
1
2
3function dirtree($path="./test") {
4echo "
<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 "</dt></dl>
1";
2}
3
4dirtree();
---------------------------------------------------------------
又是0==false的原因
:(
谢谢唠叨和鸟的代码,真是精益求精...拜服一哈
---------------------------------------------------------------
问题解决了 :)
---------------------------------------------------------------
这个问题以前一直忽略了,没想到真的是没想到。问题有趣,解得干净,good.
---------------------------------------------------------------
学习
---------------------------------------------------------------
记下
---------------------------------------------------------------
现在明白为什么手册上的例子要写成while(false!==($entry = $d->read()))了,原来就是防止0==false的出现呀。
---------------------------------------------------------------
嗯!非常同意!
===是值和类型都相等才等,否则2.3=="2.3abc"就会为真了,而===才为假
---------------------------------------------------------------
这个东东太经典了,我修改了一下就可以用作影视总目录了
1
2
3function dirtree($path=".") {
4echo "
<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 "</dt></dt></dl>
1";
2}
3
4dirtree("f:\video");
但是$path 如果是ftp的地址,这个东东就不好用了,是不是我的ftp server 没设置好啊?
---------------------------------------------------------------
知识最终要,分也不能丢。
---------------------------------------------------------------
这个问题好得很,有趣。
---------------------------------------------------------------
to ustcfrank(阿卡波糖)
可能不能用于远程连接。
---------------------------------------------------------------
呵呵,这样就ok 了,真笨
if(is_dir($file))
{
echo "
1<dt><a "$file="" .="" href='\"ftp://10.0.168.14\""' target='\"_blank\"'>$v</a>";
2dirtree($file);
3}
4else
5echo "<dt>$v";
6\---------------------------------------------------------------
7
8这个问题以前我也遇到过
9经典!收了!
10\---------------------------------------------------------------
11
12收藏 学习
13遍历目录如此简洁
14\---------------------------------------------------------------
15
16好象还是有问题,我现在改成
17if(is_dir($file))
18{
19$p=substr($file,strlen($path));
20echo "<dt><a $v<="" a="" href='\"ftp://10.0.168.14$p'>";
21dirtree($file);
22}
23else
24echo "<dt>$v";
25
26用dirtree("f:\video");调用,第一级子目录没问题,但多级子目录就有问题了,是因为递归的原因
27\---------------------------------------------------------------
28
29good
30\---------------------------------------------------------------
31
32我水平还不够,不过要散分倒是最好的对象。
33\---------------------------------------------------------------
34
35收藏
36\---------------------------------------------------------------
37
38又学着了,呵呵
39\---------------------------------------------------------------
40
41我修改的显示ftp上总目录的版本,这回好用了
42
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 "</dt></dt></dl>";
}
dirtree("f:\video");
1
2
3\---------------------------------------------------------------
4
5呵呵,谁再加个js变成个类似资源管理器的东东吧?偶js很差,有心无力
6\---------------------------------------------------------------
7
8不错!
9\---------------------------------------------------------------
10
11经典,值得收藏!
12\---------------------------------------------------------------
13
14TO: okdw(零零发财)
15支持你的说法!哪位给个JS出来啊!关注中!
16\---------------------------------------------------------------
17
18大家注意,我又发现了错误
19
20我修改代码的目标是:如果$file是dir的话,就加个链接,可是我的代码中又发现错误:
21
22如果文件夹的名字有空格的话,链接就不能正确显示,比如有个文件夹的名字是"for test"
23
24则echo "<dt><a href="$file" target='\"_blank\"'>$v</a>";
25产生的输出是<a href="f:\video/for" target="_blank" test="">for test</a>
26
27这时点击链接,只能链到f:/video/for ,而test丢掉了,自然连不上
28
29修改这个错误的方法是把
30
31echo "<dt><a href="$file" target='\"_blank\"'>$v</a>";
32
33改为
34
35echo "<dt><a href='\"$file\"' target='\"_blank\"'>$v</a>";
36
37就好了
38
39
40\---------------------------------------------------------------
41
42呵呵,0和false的关系
$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/>";
}
1\---------------------------------------------------------------
2
3上面的结果:)
4
5when test is 0.......
6if (test=0) return false
7if(test==0) return true
8if(test==false) return true
9if(test===0) return true
10if(test===false) return false
11if(test=1) return true
12if(false!==(test=0)) return true
13
14if (test=0){}就意味着恒为伪false,记得以前看到文章里说
15IF($var=0) {} 可以当做/* */来用^_^
16
17\---------------------------------------------------------------
18
19偶不懂PHP,接点分吧!
20\---------------------------------------------------------------
21
22up一下
23\---------------------------------------------------------------
24
25精品原来是这样炼出来的。
26\---------------------------------------------------------------
27
28up
29\---------------------------------------------------------------
30
31mark
32\---------------------------------------------------------------
33
34我一直都对递归函数有一种恐惧心理,老弄不明白到底是哪个调用哪个.郁闷!
35\---------------------------------------------------------------
36
37接分
38\---------------------------------------------------------------
39
40up
41\---------------------------------------------------------------
42
43ding
44\---------------------------------------------------------------
45
46UP</dt></dt></dt></dt></a></dt></dt></dt>