假设我有以下 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我宁愿避免嵌套循环。
PHP 还具有数组过滤功能,它(出于显而易见的原因)称为array_filter()并使用匿名函数执行您想要的操作。
function findAllWithId($objects, $id) {
return array_filter($objects, function($toCheck) use ($id) {
return $toCheck->id == $id;
});
}
Run Code Online (Sandbox Code Playgroud)