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 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;
});
}