データベースの結果を多次元配列に変換する
データ管理の領域では、多くの場合、ユーザー内で階層データ構造を整理して表示することが必要になります。 -フレンドリーで理解しやすい形式。これを達成するには、「クロージャ テーブル」アプローチが効果的な解決策となります。この手法では、クロージャー テーブルとして知られる、階層要素間の関係を格納する別のテーブルを維持する必要があります。
クロージャー テーブルを利用することで、効率的にサブツリーを取得し、階層的なデータ配置を生成することが可能になります。たとえば、次の例を考えてみましょう。
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 サイトの他の関連記事を参照してください。