首頁  >  文章  >  後端開發  >  如何在 PHP 中從平面數組建立層次樹結構?

如何在 PHP 中從平面數組建立層次樹結構?

Barbara Streisand
Barbara Streisand原創
2024-11-27 18:33:15180瀏覽

How to Build a Hierarchical Tree Structure from a Flat Array in PHP?

在 PHP中從平面數組建立樹結構

問題:

你有由具有「id」和「parent_id」欄位的元素組成的平面數組,其中每個元素最多可以有一位父母和零個或多個孩子。當'parent_id'為0時,此元素為根級項目。目標是將這個平面數組重組為具有子父關係的分層樹。

解決方案:

提供的函數 buildTree() 有效地完成了此任務透過迭代輸入數組並遞歸構建樹結構。輸出樹中的每個元素都包含其 ID、父 ID 和子元素陣列。

實作:

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

    return $branch;
}

'unset'呼叫:

在上面的程式碼中,unset() 呼叫對於維護層次結構至關重要結構。它從原始輸入數組中刪除已處理的元素,確保元素在樹中不重​​複。

範例:

考慮提供的輸入陣列:

[_319_] => [...],
[_320_] => [...],
[_321_] => [...],
[_322_] => [...],
[_323_] => [...],
[_324_] => [...],
[_325_] => [...]

處理後,輸出樹維護父子關係關係:

[_319_] => [...],
[_320_] => [
    'id' => '_320_',
    'parent_id' => 0,
    'children' => [
        [_321_] => [...],
        [_325_] => [...]
    ]
],
[_323_] => [
    'id' => '_323_',
    'parent_id' => 0,
    'children' => [
        [_324_] => [...]
    ]
]

處理後,輸出樹維護父子關係關係:

因此,buildTree() 函數可讓您將具有父子關係的平面元素陣列轉換為PHP 中的結構化層次樹。

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

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