gpt4 book ai didi

PHP对象父/子递归

转载 作者:可可西里 更新时间:2023-11-01 13:07:36 27 4
gpt4 key购买 nike

我有一个父子 OO 关系。父对象有很多子对象,每个子对象都通过引用知道它的父对象。

parent 也可以是 child (基本上是一棵树)。

当我在根对象上执行 var_dump() 时,它多次显示 ["parent"]=>RECURSION 并且生成描述会很长。

我想知道我是否做错了什么。如果是,我对“最佳实践”感兴趣。

感谢您的帮助!

最佳答案

你没有做错任何事;您有一个对其子项有引用的父项,并且每个子项都有对其父项的引用。当您 var_dump() 根对象时,它会遍历子对象以打印它们,并且由于每个子对象都有对父对象的引用,因此它会返回。因为这通常会导致无限循环(父 -> 子 -> 父 -> 子 -> ...),PHP 保留它已经访问过的对象的列表,并且当它遇到一个时,它不会尝试转储它再次打印“RECURSION”。

唯一需要注意的是 PHP 使用引用计数来进行垃圾收集,而像这样的循环结构不会自行解决。结果,您的脚本将泄漏内存,这可能是也可能不是问题。要解决这个问题,您需要手动清理:就在父对象超出范围之前,您需要将所有父指针设置为空。

另请参阅:http://bugs.php.net/bug.php?id=33595

关于PHP对象父/子递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4627208/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com