首页 > 后端开发 > php教程 > 如何根据父子关系生成分层 HTML 树?

如何根据父子关系生成分层 HTML 树?

Linda Hamilton
发布: 2024-12-29 19:42:15
原创
422 人浏览过

How to Generate a Hierarchical HTML Tree from Parent-Child Relationships?

从父子关系生成层次树

挑战:

转换集合名称-父名称对形成分层树结构。目标是生成表示子父关系的嵌套 HTML 无序列表 (

    )。

    递归方法:

    解决方案使用两个递归函数。第一个函数 parseTree() 遍历树结构并构造层次树。它搜索指定根的直接子节点并将它们添加到结果树中,递归地解析每个子节点的子节点。

    function parseTree($tree, $root = null) {
        $return = array();
        foreach($tree as $child => $parent) {
            if($parent == $root) {
                unset($tree[$child]);
                $return[] = array(
                    'name' => $child,
                    'children' => parseTree($tree, $child)
                );
            }
        }
        return empty($return) ? null : $return;    
    }
    登录后复制

    第二个函数 printTree() 遍历由 parseTree() 生成的树并打印相应的 HTML 无序list.

    function printTree($tree) {
        if(!is_null($tree) && count($tree) > 0) {
            echo '<ul>';
            foreach($tree as $node) {
                echo '<li>'.$node['name'];
                printTree($node['children']);
                echo '</li>';
            }
            echo '</ul>';
        }
    }
    登录后复制

    用法:

    要将给定的名称-父名称对转换为树结构并打印 HTML 无序列表,您可以将这些函数调用为如下:

    $result = parseTree($tree);
    printTree($result);
    登录后复制

    组合函数:

    为了提高效率,可以将两个函数合并为一个函数:

    function parseAndPrintTree($root, $tree) {
        $return = array();
        if(!is_null($tree) && count($tree) > 0) {
            echo '<ul>';
            foreach($tree as $child => $parent) {
                if($parent == $root) {                    
                    unset($tree[$child]);
                    echo '<li>'.$child;
                    parseAndPrintTree($child, $tree);
                    echo '</li>';
                }
            }
            echo '</ul>';
        }
    }
    登录后复制

    这个组合函数简化了解析和打印过程,减少了迭代次数必填。

    以上是如何根据父子关系生成分层 HTML 树?的详细内容。更多信息请关注PHP中文网其他相关文章!

    来源:php.cn
    本站声明
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
    作者最新文章
    热门教程
    更多>
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板