有人可以解释一下,为什么PHP中两个MongoDB \ BSON \ ObjectIds的严格比较(===)返回FALSE,尽管两个id都是类型为MongoDB \ BSON \ ObjectId且具有相同的oid?
下一个问题是关于处理此案例的最佳做法。通过非严格比较(==)进行安全是否安全,或者是否有其他方法可以做到这一点,例如: (string)$id1 === (string)$id2
?
来自the relevant PHP documentation:
使用标识运算符(
===
)时,对象变量是相同的,当且仅当它们引用同一个类的同一实例时。
所以你应该使用标准比较运算符(==
)。不需要字符串转换。
对于@jh1711:
BSON \ ObjectId ...实现自定义object_compare处理程序。但是处理程序只是比较了ID