DateTime 对象的严格比较

LBA*_*LBA 5 php datetime object comparison-operators

我正在对对象列表进行严格比较,只是为了识别可能已更改的对象,例如:

if ($oldValue !== $newValue)
Run Code Online (Sandbox Code Playgroud)

在某些情况下,$oldValue并且$newValueDateTime对象。

调试我的应用程序在比较它们之前,我得到了以下两个值的输出:

日期时间对象([日期] => 2017-04-24 00:00:00.000000 [timezone_type] => 3 [timezone] => UTC)

日期时间对象([日期] => 2017-04-24 00:00:00.000000 [timezone_type] => 3 [timezone] => UTC)

为什么我的比较/条件仍然正确?

Joh*_*nde 7

在 PHP 中比较对象时,===运算符不比较值。它比较实例。这意味着除非两个对象都指向同一个对象,否则它们并不严格相等。

使用比较运算符(==)时,比较对象变量的方式比较简单,即:如果两个对象实例具有相同的属性和值(用==比较值),并且是同一类的实例,则它们相等.

使用标识运算符 (===) 时,对象变量是相同的,当且仅当它们引用同一类的同一实例。