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

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

问题描述:

Let's assume I have the following PHP code:

$a = new a();
$a->id = 1;

I then have an array $m of objects of type type a (but they really could be of any type). I want to check if any object in m has property id equal to 1. In Java, I'd do something like:

myList
.stream()
.filter(x <- x.id == a.id)
.count();

In PHP I tried

in_array($a, $m)

but that didn't seem to do work, because obviously even if another object had the same ID it would still be a different object.

I could obviously use a loop, but as really I'd want to check if any object in an array n had a corresponding object with the same ID in m I'd rather avoid a nested loop.

我们假设我有以下PHP代码: p>

  $  a = new a(); 
 $ a-&gt; id = 1; 
  code>  pre> 
 
 

然后我有一个数组 $ m code> of 类型为a的对象(但它们实际上可以是任何类型)。 我想检查m中的任何对象是否具有属性id等于1.在Java中,我会执行以下操作: p>

  myList 
.stream()
。  filter(x&lt;  -  x.id == a.id)
.count(); 
  code>  pre> 
 
 

在PHP中我试过 p> \ n

  in_array($ a,$ m)
  code>  pre> 
 
 

但这似乎不起作用,因为很明显即使另一个对象有 相同的ID它仍然是一个不同的对象。 p>

我显然可以使用循环,但实际上我想检查数组中的任何对象 n code >在 m code>中有一个具有相同ID的相应对象我宁愿避免使用嵌套循环。 p> div>

PHP also has an array filtering functioning, which (for obvious reasons) is called array_filter() and does what you want, with anonymous functions.

function findAllWithId($objects, $id) {
    return array_filter($objects, function($toCheck) use ($id) { 
        return $toCheck->id == $id; 
    });
}