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

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

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-26 09:57:10417ブラウズ

How to Convert Parent-Child Relationships into Hierarchical Trees in PHP?

親子関係を階層ツリーに変換する

プログラミングでは、一連の親子関係を階層ツリーに変換する必要がある場合があります。階層ツリー構造。このタスクは、再帰的アプローチを使用して PHP で実行できます。

データ例:

次の一連の親子関係を考えてみましょう:

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

階層型への変換Tree:

このデータを階層ツリー構造に変換するために、2 つの PHP 関数を作成します:

  • parseTree($tree, $root) : この関数は、子と親のペアを再帰的に解析し、 tree.
  • printTree($tree): この関数はツリーを走査し、順序なしリストとして出力します。

parseTree Function:

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関数:

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

使用法:

これらの関数を使用するには、まず子と親のペアの配列を初期化します。次に、配列を使用して parseTree を呼び出し、結果のツリーを使用して printTree を呼び出します。

$tree = array(
    'H' => 'G',
    'F' => 'G',
    'G' => 'D',
    'E' => 'D',
    'A' => 'E',
    'B' => 'C',
    'C' => 'E',
    'D' => null
);

$result = parseTree($tree);
printTree($result);

結果:

出力階層ツリーを表す順序なしリストになります:

<ul>
<li>D
<ul>
<li>G
<ul>
<li>H</li>
<li>F</li>
</ul>
</li>
<li>E
<ul>
<li>A</li>
<li>C
<ul>
<li>B</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>

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

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