【发布时间】:2021-06-05 05:39:34
【问题描述】:
我有两个对象,它们是相同的,但用不同的方法编写。一种是 JSON(解码):
$object1 = json_decode('{"null":null,"int":1}');
还有一个是 StdClass:
$object2 = (object)[
"null" => null,
"int" => 1,
];
如您所见,它们包含完全相同的结构(键和值)。没有什么不同。所以应该是相等的。但是……不是。
echo json_encode($object1 === $object2);
// -> false
我想也许我错了,JSON 不是 StdClass。所以我使用了var_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。
【问题讨论】:
-
阅读 object-comparison.php -
==与=== -
使用
==或相反的3v4l.org/d2XuL
标签: php json comparison stdclass