我有一個PHP對象的一維數組。每個對象都有兩個屬性,一個屬性是對象的唯一ID,另一個是數組中其父對象的唯一ID。例如:使用單維數組中的數據創建多維數組
array(3) {
[0]=>
object(stdClass)#1 (2) {
["ID"]=>
int(1)
["parentID"]=>
int(0)
}
[1]=>
object(stdClass)#2 (2) {
["ID"]=>
int(3)
["parentID"]=>
int(2)
}
[2]=>
object(stdClass)#3 (2) {
["ID"]=>
int(2)
["parentID"]=>
int(1)
}
}
我需要將此一維數組轉換爲多維數組。我已經採取了一些措施,但我無法找到一個方法來完成沒有每個級別的嵌套循環。該算法需要能夠適應假設無限級別的嵌套。我試過使用一些遞歸技術,但我從來沒有得到它很正確。
要增加一點複雜性,我得到的數組中的對象並不總是按照一個合理的順序。我試圖在上面的例子中複製這個;你會注意到ID爲3的對象在ID爲2的對象之前進入數組。因此它們也可能是一個排序算法。
理想上面的例子會變成這樣的:
Array
(
[0] => Array
(
[ID] => 1
[parentID] => 0
[0] => Array
(
[ID] => 2
[parentID] => 1
[0] => Array
(
[ID] => 3
[parentID] => 2
)
)
)
)
您的示例數據中有父/子遞歸。節點3的父節點是2,節點2的父節點是3.你有打字錯誤嗎? – 2009-11-10 17:48:53
我做到了,謝謝你的發現。它現在已經修復。 – macinjosh 2009-11-10 17:56:54
這裏的僞代碼答案是否合適,或者您是否正在尋找PhP響應? – aperkins 2009-11-10 18:00:11