我環顧了網絡,並沒有完全找到我要找的東西。我有一個包含'id'和'parent_id'的每個元素的平面數組。每個元素只有一個父親,但可能有多個孩子。如果parent_id = 0,則它被視爲根級別項目。我試圖讓我的平板數組成一棵樹。我發現的其他樣品只能將該元素複製到父級,但原始樣式仍然存在。從PHP中的平面陣列構建樹
EDIT
起始陣列的每個元件由一個單獨的XML文件中讀取。如果父文件沒有父文件,則文件本身將具有「0」作爲parent_id的值。鑰匙實際上是字符串。
我很抱歉,以前的困惑。希望這是更清晰:
/EDIT
我的出發陣列:
Array ( [_319_] => Array ( [id] => 0 [parent_id] => 0 ) [_320_] => Array ( [id] => _320_ [parent_id] => 0 ) [_321_] => Array ( [id] => _321_ [parent_id] => _320_ ) [_322_] => Array ( [id] => _322_ [parent_id] => _321_ ) [_323_] => Array ( [id] => _323_ [parent_id] => 0 ) [_324_] => Array ( [id] => _324_ [parent_id] => _323_ ) [_325_] => Array ( [id] => _325_ [parent_id] => _320_ ) )
結果數組的樹由後:
Array ( [_319_] => Array ( [id] => _319_ [parent_id] => 0 ) [_320_] => Array ( [id] => _320_ [parent_id] => 0 [children] => Array ( [_321_] => Array ( [id] => _321_ [parent_id] => _320_ [children] => Array ( [_322_] => Array ( [id] => _322_ [parent_id] => _321_ ) ) ) [_325_] => Array ( [id] => _325_ [parent_id] => _320_ ) ) [_323_] => Array ( [id] => _323_ [parent_id] => 0 [children] => Array ( [_324_] => Array ( [id] => _324_ [parent_id] => _323_ ) ) )
任何幫助/指導不勝感激!
某些代碼我迄今爲止:
function buildTree(array &$elements, $parentId = 0) { $branch = array(); foreach ($elements as $element) { if ($element['parent_id'] == $parentId) { $children = $this->buildTree($elements, $element['id']); if ($children) { $element['children'] = $children; } $branch[] = $element; } } return $branch; }
我很困惑。你只是要求我們編寫代碼,並將你的第一個數組中的數據吐出來? – MetalFrog 2012-01-12 18:30:23
是啊......這裏有什麼問題? – 2012-01-12 18:32:00
總之,我想是的。我在這裏查看了各種其他的例子,在其他博客/論壇上。但是當我嘗試過它們時,它們不起作用。 – DSkinner 2012-01-12 18:33:12