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

PHP で親子関係から階層ツリー構造を構築するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-14 11:41:11234ブラウズ

How Can I Build a Hierarchical Tree Structure in PHP from Parent-Child Relationships?

親子関係からの階層ツリー構造の作成

親子関係から階層ツリー構造を構築することは、プログラミングにおける一般的なタスクです。これを実現するには、再帰的アプローチを使用して、データをネストされたユニットに効果的に編成できます。

PHP では、一連の親子ペアを階層ツリーに変換するには、解析と出力という 2 つの主要な機能が必要です。解析関数は、子と親のペアを系統的に走査して、階層データ構造を構築します。これに続いて、印刷関数はこの構造を、各リスト項目が子を表す、一連のネストされた HTML 順序なしリストに変換します。

例として、次の親子ペアを考えてみましょう:

Child : Parent
H : G
F : G
G : D
E : D
A : E
B : C
C : E
D : NULL

このデータを解析するには、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 関数を定義します。解析された階層を HTML の順序なしリストに変換します。

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>';
    }
}

これら 2 つの関数を組み合わせることで、子と親のペアを階層ツリー構造に変換できます。

以上がPHP で親子関係から階層ツリー構造を構築するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。