首頁 > 後端開發 > php教程 > 如何在 PHP 中從平面數組高效建構樹結構?

如何在 PHP 中從平面數組高效建構樹結構?

Barbara Streisand
發布: 2024-12-02 15:33:15
原創
697 人瀏覽過

How Can I Efficiently Build a Tree Structure from a Flat Array in PHP?

在 PHP 中從平面數組建立樹

在 PHP 中,從平面數組建立樹資料結構可能具有挑戰性。但是,可以透過應用遞歸和理解平面數組中的父子關係來簡化此任務。

給定一個平面數組,其中每個元素都有一個“id”和一個“parent_id”,目標就是將其轉換為層次樹。如果結果樹中的每個元素有子元素,則它應該有一個「children」屬性。

解決方案

提供的程式碼嘗試遞歸創建樹,但它將元素添加到分支後未能刪除該元素,導致同一元素出現多個副本。要解決這個問題,我們需要在將元素新增到分支後從平面數組中刪除該元素。

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['id']] = $element;
            unset($elements[$element['id']]);
        }
    }

    return $branch;
}
登入後複製

說明

  1. 我們遍歷數組,檢查具有指定父 ID 的元素。
  2. 如果找到匹配的元素,我們將其分配給一個變數並遞歸收集其子元素。
  3. 如果元素有子元素,我們將它們指派給目前元素的 'children' 屬性。
  4. 將元素新增至分支後,我們將其從分支中刪除平面陣列以防止重複。
  5. 我們遞歸地繼續這個過程,直到整個樹都被

產生的數組將是一個分層樹,每個節點都包含其子節點作為嵌套數組,從而清晰地表示原始平面數組中的父子關係。

以上是如何在 PHP 中從平面數組高效建構樹結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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