ljnchn I can do beter.

PHP遍历目录的三种方法

第一种实现办法:用dir返回对象

<?php
function listDir($dir)
    {
        $mydir = dir($dir);
        echo "<ul>";
        while($file = $mydir->read())
        {
            if((is_dir("$dir/$file")))
            {
                echo "<li>$file</li>";
                listDir("$dir/$file");
            }
            elseif($file!=="."&$file!=="..")
            echo "<li><a href='$dir/$file' target='_blank'>$file</a></li>";
        }
        echo "</ul>";
        $mydir->close();
    }
listDir(".");
?>

第二种,使用readdir()函数

<?php
function listDir2($dir)
    {
        $mydir=opendir($dir);
        echo "<ul>";
        while(($file=readdir($mydir))!==false) {
            if ($file!='.'&&$file!='..') {
                if (is_dir($file)) {
                    echo "<li class='dir'>$file</li>";
                    listDir2("$dir/$file");
                }else{
                    echo "<li class='file'><a href='$dir/$file' target='_blank'>$file</a></li>";
                }
            }       
        }
        closedir($mydir);   
        echo "</ul>";
    }
listDir2('.');
?>

第三种,使用scandir()函数

<?php
function listDir3($dir)
{
    $mydir=scandir($dir);
    echo "<ul>";
    foreach ($mydir as $key => $value) {
        if ($value!='.'&&$value!='..') {
            if (is_dir($value)) {
                echo "<li class='dir'>$value</li>";
                listDir3("$dir/$value");
            }else{
                echo "<li class='file'><a href='$dir/$value' target='_blank'>$value</a></li>";
            }
        }           
    }
    echo "</ul>";
}
listDir3(".");
?>