PHP回扫时扫描文件夹然后文件

时间:2014-02-14 14:28:45

标签: php recursion directory

我一直在尝试打印列表中的文件,同时获取文件,文件夹和子文件夹。 我可以解决所有问题,但我想先显示文件夹。 有没有办法做到这一点?

到目前为止我的代码:

function getFiles($path) {
    foreach (new DirectoryIterator($path) as $file) {
            if($file->isDot()) continue;

            if($file->isDir())
                echo "<li class='folder'>\n";
            else
                echo "<li>\n";

                echo "<a href='#'>" . $file->getFilename() . "</a>\n";
            if ($file->isDir()) {
                echo "<ul>\n";
                getFiles($file->getPathname());
                echo "</ul>\n";
            }
            echo "</li>\n";

    }
}

希望你能帮助我!

1 个答案:

答案 0 :(得分:2)

而不是echo将它们添加到临时数组中。我将创建一个数组名称$directories和一个名为$files的数组,然后您可以遍历这两个数组并echo

这样的事情:

function getFiles($path) {
    $directories = array();
    $files = array();
    foreach (new DirectoryIterator($path) as $file) {
        if ($file->isDot())
            continue;

        if ($file->isDir())
            $directories[] = $file;
        else
            $files[] = $file;
    }
    foreach($directories as $file) {
        echo "<li class='folder'>\n";
            echo "<a href='#'>" . $file->getFilename() . "</a>\n";
            echo "<ul>\n";
            getFiles($file->getPathname());
            echo "</ul>\n";
        echo "</li>\n";
    }
    foreach($files as $file) {
        echo "<li>\n";
            echo "<a href='#'>" . $file->getFilename() . "</a>\n";
        echo "</li>\n";
    }
}