php - 对象比较给出 fatal error

标签 php

我被要求回答一个问题而不执行。

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/

相关文章:

php - 问题持久化嵌套的嵌套嵌入文档

php - 如何让 __debugInfo 与 XDebug 一起工作?

php - 仅前缀 redis session key

php - 如何通过Jquery或Php代码计算Youtube视频时长

php - 本地主机拒绝连接Xampp问题

PHP 查询 - 当用户 ID 存储在另一个表中时,如何添加新列并在表中插入用户信息?

php - 循环遍历php中的表单输入数组

PHP 在异常堆栈跟踪中缺少函数参数

php - 查找特定半径内的邮政编码

php - 在高负载下与 PHP+Redis 的并发连接