ホームページ > バックエンド開発 > PHPチュートリアル > 親子関係から階層型 HTML ツリーを生成するにはどうすればよいですか?

親子関係から階層型 HTML ツリーを生成するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-29 19:42:15
オリジナル
426 人が閲覧しました

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

親子関係からの階層ツリー生成

チャレンジ:

コレクションの変換名前と親名のペアを階層ツリー構造にします。目標は、子と親の関係を表すネストされた HTML 順序なしリスト (

    ) を生成することです。

    再帰的アプローチ:

    解決策2 つの再帰関数を使用します。最初の関数 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;    
    }
    ログイン後にコピー

    2 番目の関数 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);
    ログイン後にコピー

    結合関数:

    効率を向上させるために、2 つの関数を 1 つの関数にマージできます:

    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 中国語 Web サイトの他の関連記事を参照してください。

    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    著者別の最新記事
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート