ホームページ >データベース >mysql チュートリアル >PHP と MySQL を使用して階層データ構造内のすべての子ノードを取得する方法

PHP と MySQL を使用して階層データ構造内のすべての子ノードを取得する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-06 12:12:02387ブラウズ

How to Retrieve All Child Nodes in a Hierarchical Data Structure with PHP and 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 サイトの他の関連記事を参照してください。

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