第一种实现办法是用dir返回对象;dir() 函数打开一个目录句柄,并返回一个对象。这个对象包含三个方法:read() , rewind() 以及 close()。
若成功,则该函数返回一个目录流,否则返回 false 以及一个 error。可以通过在函数名前加上 "@" 来隐藏 error 的输出。
<?php
/**********************
一个简单的目录递归函数
第一种实现办法:用dir返回对象
***********************/
function tree($directory)
{
$mydir = dir($directory);
echo "<ul>\n";
while($file = $mydir->read())
{
if((is_dir("$directory/$file")) AND ($file!=".") AND ($file!=".."))
{
echo "<li><font color=\"#ff00cc\"><b>$file</b></font></li>\n";
tree("$directory/$file");
}
else
echo "<li>$file</li>\n";
}
echo "</ul>\n";
$mydir->close();
}
//开始运行
echo "<h2>目录为粉红色</h2><br>\n";
tree("./A");
/***********************
第二种实现办法:用readdir()函数
************************/
function listDir($dir)
{
<span style="white-space:pre"> </span>if(is_dir($dir))
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>if ($dh = opendir($dir))
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>while (($file = readdir($dh)) !== false)
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>if((is_dir($dir."/".$file)) && $file!="." && $file!="..")
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>echo "<b><font color='red'>文件名:</font></b>",$file,"<br><hr>";
<span style="white-space:pre"> </span>listDir($dir."/".$file."/");
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>else
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>if($file!="." && $file!="..")
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>echo $file."<br>";
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>closedir($dh);
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>}
}
//开始运行
listDir("./nowamagic");
?>