假设我有以下PHP代码:
$a = new a();
$a->id = 1;
然后我有一个类型为a的对象的数组$m
(但它们实际上可以是任何类型)。我想检查m中的任何对象是否具有等于1的属性id。在Java中,我会执行以下操作:
myList
.stream()
.filter(x <- x.id == a.id)
.count();
在PHP中我试过
in_array($a, $m)
但这似乎没有起作用,因为很明显即使另一个对象具有相同的ID,它仍然是一个不同的对象。
我显然可以使用循环,但实际上我想要检查数组n
中的任何对象是否在m
中具有相同ID的对应对象我宁愿避免嵌套循环。
答案 0 :(得分:4)
PHP还有一个数组过滤功能,它(由于显而易见的原因)被称为array_filter()并使用匿名函数执行您想要的操作。
function findAllWithId($objects, $id) {
return array_filter($objects, function($toCheck) use ($id) {
return $toCheck->id == $id;
});
}