ホームページ >バックエンド開発 >PHPチュートリアル >PHP で親子関係を階層ツリーに変換するにはどうすればよいですか?
親子関係を階層ツリーに変換する
プログラミングでは、一連の親子関係を階層ツリーに変換する必要がある場合があります。階層ツリー構造。このタスクは、再帰的アプローチを使用して PHP で実行できます。
データ例:
次の一連の親子関係を考えてみましょう:
Child : Parent H : G F : G G : D E : D A : E B : C C : E D : NULL
階層型への変換Tree:
このデータを階層ツリー構造に変換するために、2 つの PHP 関数を作成します:
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 サイトの他の関連記事を参照してください。