首頁 > 後端開發 > php教程 > 如何根據父子關係產生分層 HTML 樹?

如何根據父子關係產生分層 HTML 樹?

Linda Hamilton
發布: 2024-12-29 19:42:15
原創
424 人瀏覽過

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
    作者最新文章
    熱門教學
    更多>
    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板