ホームページ >データベース >mysql チュートリアル >PHP と MySQL を使用して階層データ構造内のすべての子ノードを取得する方法
MySQL と PHP を使用した階層データの取得
データベースから階層データを取得することは、特に隣接リスト データ モデルを使用する場合に困難になることがあります。この質問は、指定された親の下にあるすべての子ノード、孫などを返す関数を作成することで、この問題に取り組むことを目的としています。
階層ツリーの構築
まず、提供された PHP コードは MySQL テーブルからデータを取得し、それを連想配列に格納します。隣接リスト データ モデルは、親子関係を 1 つの列 (parent_id) に格納することによって階層を表します。
このデータをツリー構造に変換するために、buildtree() 関数は配列を再帰的に走査し、それぞれを関連付けます。ノードの ID とそのデータを取得し、子を要素として持つネストされた配列を作成します。
親の下のノードの取得
fetch_recursive() 関数は、すべての子ノードを取得するように設計されています。指定された親の下にあります。指定された親 ID から開始して、ツリー構造を反復処理します。ノードの親 ID が指定された親 ID と一致する場合、ノードのデータを結果配列に追加し、子ノードの探索に進みます。
使用例
この機能を利用するには、次の PHP コードでツリーを構築し、特定の ID で子ノードを取得します:
<?php $data = [ ['id' => 1, 'name' => 'Electronics', 'parent_id' => 0], ['id' => 2, 'name' => 'Televisions', 'parent_id' => 1], ['id' => 3, 'name' => 'Portable Electronics', 'parent_id' => 1], // ... additional data ]; $tree = buildtree($data); $child_nodes = fetch_recursive($tree, 3); foreach ($child_nodes as $node) { echo $node['name'] . '<br>'; }
以上がPHP と MySQL を使用して階層データ構造内のすべての子ノードを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。