PHP 检查数组中是否存在具有属性的对象

MrD*_*MrD 5 php

假设我有以下 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我宁愿避免嵌套循环。

Eri*_*rik 6

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)