我被要求回答一个问题而不执行。
class Foo {
public $x;
}
$a = new Foo();
$b = new Foo();
$a->x = $b;
$b->x = $a;
print_r($a == $b);
我认为这应该打印 1 但是当我执行它时出现了 fatal error 。
Fatal error: Nesting level too deep - recursive dependency? on line 13
谁能解释为什么我会收到此错误?
最佳答案
因为 PHP 比较对象的方式。
当您使用 ==
比较对象时,PHP 将查看每个对象(以及嵌套对象,以防某些属性包含其他对象)的每个属性,并比较它们。如果所有属性都相等,则对象将被视为相等。
在这种特定情况下,您将对象放置在彼此的属性中,导致比较引擎循环 ($a->b->a->b->a->b->。 ..
),这会引发错误。
关于php - 对象比较给出 fatal error ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13360368/