試圖創建多維數組樹下面的代碼缺少的節點
$source = array(
(array('id'=>406,'parent'=>0,'title'=>'level_0_406')),
(array('id'=>270,'parent'=>268,'title'=>'level_0_406_268_270')),
(array('id'=>271,'parent'=>268,'title'=>'level_0_406_268_271')),
(array('id'=>272,'parent'=>268,'title'=>'level_0_406_268_272')),
(array('id'=>273,'parent'=>268,'title'=>'level_0_406_268_273)')),
(array('id'=>269,'parent'=>268,'title'=>'level_0_406_268_269')),
(array('id'=>268,'parent'=>406,'title'=>'level_0_406_268')),
(array('id'=>407,'parent'=>406,'title'=>'level_0_406_407')),
(array('id'=>274,'parent'=>406,'title'=>'level_0_406_274')),
(array('id'=>500,'parent'=>407,'title'=>'level_0_406_407_500')),
);
$result = array();
$links = array(0=>&$result);
foreach ($source as &$element){
$links[$element['id']] = &$element;
$links[$element['parent']]['childs'][$element['id']] = &$element;
}
但結果數組不包括源陣列,即幾個節點。節點id = 269,270,271,272,273。
Array
(
[childs] => Array
(
[406] => Array
(
[id] => 406
[parent] => 0
[title] => level_0_406
[childs] => Array
(
[268] => Array
(
[id] => 268
[parent] => 406
[title] => level_0_406_268
)
[407] => Array
(
[id] => 407
[parent] => 406
[title] => level_0_406_407
[childs] => Array
(
[500] => Array
(
[id] => 500
[parent] => 407
[title] => level_0_406_407_500
)
)
)
[274] => Array
(
[id] => 274
[parent] => 406
[title] => level_0_406_274
)
)
)
)
)
我嘗試了不同代碼樹生成的例子,但它們都與源數組相同的問題,如$源。請幫我理解這種行爲。
更新 現在我明白數組有什麼問題。但是如果我在DB中有這樣的數據,如何正確選擇呢?在使用樹生成函數之前,應該對$ source數組進行特殊排序。
你的代碼存在幾個問題:?? 1)您有$ links ['id']和$ links ['parent'],但使用$ links ['cat_id']和$ links ['parent_id']。 2)您經常使用引用操作符(&),並且我不確定您的應用程序邏輯是否特別需要該操作符。 3)$ links [$ element ['cat_id']]和$ links [$ element ['parent_id']]可能會相互衝突並重寫彼此: - ? – Khez 2011-04-03 21:23:45
1.rayys names fixed 2.it不是我自己的代碼,只是使用了其中一個解決方案 – OlegEF 2011-04-03 22:18:54