首頁 > 後端開發 > php教程 > 如何從平面資料庫結果遞歸建構多維數組?

如何從平面資料庫結果遞歸建構多維數組?

Barbara Streisand
發布: 2024-12-14 01:40:10
原創
266 人瀏覽過

How to Recursively Build a Multidimensional Array from Flat Database Results?

從資料庫結果遞歸建立多維數組

從平面資料庫結果擷取分層資料結構,例如頁面和類別選單,可以使用遞歸函數。此函數將獲取原始數組並根據父子關係將其組織為巢狀數組。

函數:

function buildTree(array $elements, $parentId = 0) {
    $branch = array();

    foreach ($elements as $element) {
        if ($element['parent_id'] == $parentId) {
            $children = buildTree($elements, $element['id']);
            if ($children) {
                $element['children'] = $children;
            }
            $branch[] = $element;
        }
    }

    return $branch;
}
登入後複製

工作原理:

  1. 函數接受一個元素數組和一個元素數組選的父ID,預設為0。
  2. 迭代數組中的每個元素。
  3. 如果元素的父 ID 與指定的父 ID 匹配,則將其視為該父元素的子元素。
  4. 此函數遞歸呼叫本身來尋找目前子元素的所有子元素。
  5. 如果該元素有任何子元素,則將它們加為數組在目前元素的 'children' 鍵下。
  6. 最後,函數傳回給定父元素的子元素陣列。

用法範例:

使用此方法將範例資料庫結果轉換為多維數組函數:

$tree = buildTree($rows);
登入後複製

其中$rows 是資料庫結果的原始數組。

輸出:

產生的分層數組將類似於所需的輸出:

Array
(
    [0] => Array
        (
            [id] => 1
            [parent_id] => 0
            [title] => Parent Page
            [children] => Array
                        (
                            [0] => Array
                                (
                                    [id] => 2
                                    [parent_id] => 1
                                    [title] => Sub Page
                                    [children] => Array
                                                (
                                                    [0] => Array
                                                        (
                                                            [id] => 3
                                                            [parent_id] => 1
                                                            [title] => Sub Sub Page
                                                        )
                                                )
                                )
                        )
            [children] => Array
                        (
                            [0] => Array
                                (
                                    [id] => 4
                                    [parent_id] => 0
                                    [title] => Another Parent Page
                                    [children] => Array
                                                (

                                                )
                                )
                        )
        )
)
登入後複製

以上是如何從平面資料庫結果遞歸建構多維數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板