1

如标题所示。
如何从嵌套文件夹中获取文件并装饰以正确显示。
我成功地从嵌套文件夹中引入文件,但显示不正确且无序。

这是我的尝试:

function getfiles($Folder) {
    $dir = opendir($Folder);
    while ($files = readdir($dir)) {
        if ($files == '.' || $files == '..')
            continue;

        if (is_dir($Folder.'/'.$files)) {
            getfiles($Folder.'/'.$files);
        }

        echo $files."<br/>";
    }
}

此函数工作正常,但结果显示不佳且无序。

我想变成这样:

.folder
   .file
   .file
   .folder2
      .file
      .folder3
         .file
4

1 回答 1

1

您没有说明您想要的输出是什么。

例如,您可以以缩进的形式显示深度:

function getfiles($Folder) {
    static $depth;

    $depth++;

    $dir = opendir($Folder);
    while ($files = readdir($dir)) {
        if ($files == '.' || $files == '..')
            continue;

        if (is_dir($Folder.'/'.$files)) {
            getfiles($Folder.'/'.$files);
        }

        echo str_repeat('- ', $depth).$files."<br/>";
    }

    $depth--;
}

或者您可以使用 HTML 来制作嵌套结构:

function getfiles($Folder) {
    echo '<ul>';
    $dir = opendir($Folder);
    while ($files = readdir($dir)) {
        if ($files == '.' || $files == '..')
            continue;

        if (is_dir($Folder.'/'.$files)) {
            getfiles($Folder.'/'.$files);
        }

        echo '<li>'.$files."</li>";
    }
    echo '</ul>';
}

如果要排序输出,请使用scandir()

function getfiles($Folder) {
    $dir = scandir($Folder, 0); // 0 for ascending order, in PHP from 5.4 use SCANDIR_SORT_ASCENDING
    foreach ($dir as $files) {
        if ($files == '.' || $files == '..')
            continue;

        if (is_dir($Folder.'/'.$files)) {
            getfiles($Folder.'/'.$files);
        }

        echo $files."<br/>";
    }
}
于 2012-09-22T12:30:11.033 回答