Как искать в массиве объекта std (массив объекта) с помощью функции php in_array?
У меня есть следующий массив объектов std
Array
(
[0] => stdClass Object
(
[id] => 545
)
[1] => stdClass Object
(
[id] => 548
)
[2] => stdClass Object
(
[id] => 550
)
[3] => stdClass Object
(
[id] => 552
)
[4] => stdClass Object
(
[id] => 554
)
)
Я хочу искать значение [id]
ключ с помощью цикла. У меня есть следующее условие, чтобы проверить, существует ли значение или нет, как показано ниже
$flag = 1;
if(!in_array($value->id, ???)) {
$flag = 0;
}
куда ???
Я хочу искать в массиве стандартных объектов [id]
ключ.
Может ли кто-нибудь помочь мне в этом?
4 ответа
Решение
Если массив не слишком большой или тест необходимо выполнить несколько раз, вы можете отобразить свойства в вашем массиве:
$ids = array_map(function($item) {
return $item->id;
}, $array);
А потом:
if (!in_array($value->id, $ids)) { ... }
Пытаться:
foreach ($array as $val) {
if (!in_array($id, (array) $val)) {
...
}
}
Почему бы просто не использовать объекты как массивы:
foreach ($array as $a) {
if (!in_array($id, (array) $a)) {
...
}
}
Предполагая, что ваш массив это имена $yourArray
,
$newArr = array();
foreach ($yourArray as $key=>$value) {
$newArr[] = $value->id;
}
И сейчас $newArr
как: array(545,548,550,552,554)
И вы можете искать в нем по:
$valueOfSearch = ... ;
$flag = 1;
if(!in_array($valueOfSearch,$newArr)) {
$flag = 0;
}