有人可以解释一下,为什么两个PHP中的MongoDB \ BSON \ ObjectId的严格比较(===)返回FALSE,尽管两个ID都具有相同的oid类型,但MongoDB \ BSON \ ObjectId类型?
下一个问题是有关处理此案的最佳实践。通过非严格比较(==)进行操作是否安全?是否有另一种方式进行操作(例如(string)$id1 === (string)$id2
?
答案 0 :(得分:2)
来自the relevant PHP documentation:
使用身份运算符(
===
)时,对象变量只有在它们引用同一类的相同实例时才是相同的。
因此,您应该只使用标准比较运算符(==
)。不需要字符串转换。
每@jh1711:
BSON \ ObjectId ...实现一个自定义的object_compare处理程序。但是处理程序只是比较ID