将目录树生成为嵌套的HTML列表时,PHP函数错误

时间:2019-02-21 19:35:46

标签: php html

我有一个目录,其深度至少为3或4级。我试图遍历整个目录树,并生成HTML无序嵌套列表。

我正在使用的代码创建了一个嵌套的HTML列表,但是它的目录深度顺序不正确。这是目前正在产生的结果,这是不正确的。

Current wrong output

这就是我要实现的目标

this output

我当前的代码如下。我需要修改哪一部分才能完成这项工作?

<?php
function read_dir_tree($parent_dir, $depth = 0){
    $str_result = "";

    $str_result .= "<li>". dirname($parent_dir) ."</li>";
    $str_result .= "<ul>";
    if ($handle = opendir($parent_dir)) 
    {
        while (false !== ($file = readdir($handle)))
        {
            if(in_array($file, array('.', '..'))) continue;
            if( is_dir($parent_dir . "/" . $file) ){
                $str_result .= "<li>" . read_dir_tree($parent_dir . "/" . $file, $depth++) . "</li>";
            }
            $str_result .= "<li>{$file}</li>";
        }
        closedir($handle);
    }
    $str_result .= "</ul>";


    return $str_result;
}

function read_dir($tp){
$link = ($tp);
echo "<ul>".read_dir_tree($link)."</ul>";
}
?>

我使用以下方式从HTML调用此PHP:

<?php
read_dir("media");
?>

1 个答案:

答案 0 :(得分:-1)

max514,这里已经给出了完整的工作示例。

RecursiveIteratorIterator and RecursiveDirectoryIterator to nested html lists