ホームページ > データベース > mysql チュートリアル > クロージャ テーブルを使用してデータベースの結果を多次元配列に変換する方法

クロージャ テーブルを使用してデータベースの結果を多次元配列に変換する方法

Susan Sarandon
リリース: 2024-11-07 00:52:02
オリジナル
886 人が閲覧しました

How to Convert Database Results into a Multidimensional Array Using a Closure Table?

データベースの結果を多次元配列に変換する

データ管理の領域では、多くの場合、ユーザー内で階層データ構造を整理して表示することが必要になります。 -フレンドリーで理解しやすい形式。これを達成するには、「クロージャ テーブル」アプローチが効果的な解決策となります。この手法では、クロージャー テーブルとして知られる、階層要素間の関係を格納する別のテーブルを維持する必要があります。

クロージャー テーブルを利用することで、効率的にサブツリーを取得し、階層的なデータ配置を生成することが可能になります。たとえば、次の例を考えてみましょう。

Table Categories:

ID         Name
1          Top value
2          Sub value1

Table CategoryTree:

child     parent     level
1          1         0
2          2         0  
2          1         1  
ログイン後にコピー

目的は、階層データを多次元配列として取得することです。望ましい出力は次のようになります。

 array (

 'topvalue' = array (
                     'Subvalue',
                     'Subvalue2',
                     'Subvalue3)
                     );

 );
ログイン後にコピー

これを実現するには、SQL クエリと行処理技術を活用します。次の疑似コードを考えてみましょう:

while ($rowData = fetch()) {
  $row = new RowObject($rowData);
  $nodes[$row["tsn"]] = $row;
  if (array_key_exists($row["_parent"], $nodes)) {
    $nodes[$row["_parent"]]->addChildRow($row);
  } else {
    $top = $row;
  }
}
return $top;
ログイン後にコピー

ここでは、行と行セットのクラスを定義します。行セットは行の配列を表し、行には行データの連想配列とその子の行セットが含まれます。 。また、行と行セット内でデータをプレーンな配列として再帰的にダンプするメソッドも定義します。

最後に、このシステム全体を次のように使用できます。

// Get an instance of the taxonomy table data gateway 
$tax = new Taxonomy();

// query tree starting at Rodentia (id 180130), to a depth of 2
$tree = $tax->fetchTree(180130, 2);

// dump out the array
var_export($tree->toArrayDeep());
ログイン後にコピー

このプロセスにより、柔軟な階層データのカスタマイズ可能な操作により、複雑な関係を表現するための洗練された体系的なアプローチが提供されます。

以上がクロージャ テーブルを使用してデータベースの結果を多次元配列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート