首頁  >  文章  >  資料庫  >  如何將資料庫結果轉換為多維數組來表示分層資料結構?

如何將資料庫結果轉換為多維數組來表示分層資料結構?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-07 16:23:03872瀏覽

How can I convert database results into a multidimensional array to represent a hierarchical data structure?

將資料庫結果轉換為陣列

簡介

本討論重點是從資料庫中擷取分層資料結構並將其轉換為多維數組單一查詢。目標是取得表示資料的樹結構的陣列。

解決方案

為了從資料庫中提取樹結構,通常使用閉包表。閉包表記錄了層次結構中祖先和後代之間的關係,可以有效率地查詢後代。

SQL 查詢

給定節點的主鍵,可以使用SQL 查詢其後代使用以下步驟:

  1. 將閉包表與主表連接以查找所有後代。
  2. 可選擇連接閉包表的另一個實例以包含父資訊。
  3. 根據深度參數限制要檢索的等級數。
  4. 依照與根節點的距離對結果進行排序。

後處理

然後按以下方式處理 SQL 結果:

  1. 行依其層次關係排序為子集。
  2. 每一行都轉換為一個 row 對象,其中包含一個集合子行的集合。
  3. 行集類別用來表示行的集合,每行都包含其子級。
  4. 結果樹是透過從根節點開始並遞歸添加其子級來建構的。

程式碼範例

在PHP 中,使用Zend Framework,以下程式碼示範了該過程:

// Get taxonomy table instance
$tax = new Taxonomy();

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

// Dump the array
var_export($tree->toArrayDeep());

輸出

輸出是🎜>輸出是一個多維數組,表示資料的樹狀結構,如:

array (
  'tsn' => '180130',
  'completename' => 'Rodentia',
  '_parent' => '179925',
  '_children' => [
    // Child rows...
  ],
)

以上是如何將資料庫結果轉換為多維數組來表示分層資料結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn