我有一个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