首页 > 解决方案 > 将目录树生成为嵌套 html 列表时的 PHP 函数错误

问题描述

我有一个深度至少为 3 或 4 级的目录。我试图通过目录树进行递归,并生成一个 HTML 无序嵌套列表。

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

当前错误输出

这就是我想要实现的目标

这个输出

我当前的代码如下。我需要修改哪个部分才能使其工作?

<?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");
?>

标签: phphtml

解决方案


max514,这里已经用一个完整的工作示例回答了这个问题。

RecursiveIteratorIterator 和 RecursiveDirectoryIterator 到嵌套的 html 列表


推荐阅读