用PHP比较两个StdClass对象
我有两个对象,它们是相同的,但用不同的方法编写。一个是JSON(解码): 其中一个是StdClass:用PHP比较两个StdClass对象,php,json,comparison,stdclass,Php,Json,Comparison,Stdclass,我有两个对象,它们是相同的,但用不同的方法编写。一个是JSON(解码): 其中一个是StdClass: $object2 = (object)[ "null" => null, "int" => 1, ]; 如您所见,它们包含完全相同的结构(键和值)。没有什么不同。所以应该是平等的。但是不是 echo json_encode($object1 === $object2); // -> false 我想也许我错了,JS
$object2 = (object)[
"null" => null,
"int" => 1,
];
如您所见,它们包含完全相同的结构(键和值)。没有什么不同。所以应该是平等的。但是不是
echo json_encode($object1 === $object2);
// -> false
我想也许我错了,JSON不是一个StdClass。所以我使用了var\u dump
,但它们仍然是一样的:
object(stdClass)#1 (2) {
["null"]=>
NULL
["int"]=>
int(1)
}
object(stdClass)#2 (2) {
["null"]=>
NULL
["int"]=>
int(1)
}
现在我很沮丧,我不知道如何比较两个对象,并检测它们之间的变化
可能吗
编辑:
我想如果我将$object1
从JSON
更改为StdClass,可能会奏效,比如第二个:
$object1 = (object)[
"null" => null,
"int" => 1,
];
但还是
false
比较对象有两种方法。如果要比较的对象是同一类的同一实例,则使用==
运算符返回true
。i、 它们是同一个物体
如果两个对象的所有属性都相等,并且对象是同一类的实例,则使用==
操作符返回true
您正在比较两个不同的对象,因此==
将返回false,但=
应返回true
看
参考资料:比较对象有两种方法。如果要比较的对象是同一类的同一实例,则使用
==
运算符返回true
。i、 它们是同一个物体
如果两个对象的所有属性都相等,并且对象是同一类的实例,则使用==
操作符返回true
您正在比较两个不同的对象,因此==
将返回false,但=
应返回true
看
参考资料:阅读-
==
与使用==
或做相反的阅读-==
与使用=
或做相反的事情谢谢你的回答。我必须问——它们有什么不同?使用==
而不是==
背后的想法是什么?我认为只有当您使用==
时,这意味着您希望结果“完全相等”,对象总是通过引用传递。表达式$obj2=$obj1
传递对$obj1
的引用,而不是值。通过使用=
和=
这种方式,程序员可以区分两个相同的对象,以及对同一对象的两个引用。无论如何,这(OP的代码)将永远不会工作echo json_encode($object1==$object2)代码>谢谢你的回答。我必须问——它们有什么不同?使用==
而不是==
背后的想法是什么?我认为只有当您使用==
时,这意味着您希望结果“完全相等”,对象总是通过引用传递。表达式$obj2=$obj1
传递对$obj1
的引用,而不是值。通过使用=
和=
这种方式,程序员可以区分两个相同的对象,以及对同一对象的两个引用。无论如何,这(OP的代码)将永远不会工作echo json_encode($object1==$object2)代码>
$object1 = (object)[
"null" => null,
"int" => 1,
];