是否in_array()做对象比较,它检查所有属性都是一样的吗?如果$obj1 === $obj2它只是做指针比较呢?
我正在使用ORM,所以我宁愿循环测试对象,如果$obj1->getId()它已经在数组中,如果它进行对象比较.如果没有,in_array则更简洁.
假设我有以下 PHP 代码:
$a = new a();
$a->id = 1;
Run Code Online (Sandbox Code Playgroud)
然后我有一个$m类型为 a 的对象数组(但它们确实可以是任何类型)。我想检查 m 中是否有任何对象的属性 id 等于 1。在 Java 中,我会执行以下操作:
myList
.stream()
.filter(x <- x.id == a.id)
.count();
Run Code Online (Sandbox Code Playgroud)
在 PHP 我试过
in_array($a, $m)
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用,因为显然即使另一个对象具有相同的 ID,它仍然是一个不同的对象。
我显然可以使用循环,但实际上我想检查数组中的任何对象n是否具有具有相同 ID 的对应对象,m我宁愿避免嵌套循环。