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