要解决您的问题,您需要正确地理解PHP中变量引用/别名的工作方式。
看下面的示例代码,它看起来与您的代码没有太大不同,但是利用引用来访问任何父对象,即使它已经“移动”了:
# transform $flat into a tree:foreach($flat as $id => &$value){ # check if there is a parent if ($parentId = $value['parent']) { $flat[$parentId][0][$id] =& $value; # add child to parent unset($flat[$id]); # remove reference from topmost level }}unset($value); # remove iterator referenceprint_r($flat); # your tree$flat现在包含
$flat- 中的所有值,但已重新排序。



