If the array isn't too big or the test needs to be performed multiple times, you can map the properties in your array:
$ids = array_map(function($item) {
return $item->id;
}, $array);
And then:
if (!in_array($value->id, $ids)) { ... }
Pergunta
I have following std Object array
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
)
)
I want to search for value of [id]
key using loop. I have following condition to check whether value is exist or not like below
$flag = 1;
if(!in_array($value->id, ???)) {
$flag = 0;
}
Where ???
I want to search in array of std Object's [id]
key.
Can any one help me for this?
Solução
If the array isn't too big or the test needs to be performed multiple times, you can map the properties in your array:
$ids = array_map(function($item) {
return $item->id;
}, $array);
And then:
if (!in_array($value->id, $ids)) { ... }
Outras dicas
try:
foreach ($array as $val) {
if (!in_array($id, (array) $val)) {
...
}
}
Why not just cast the objects as arrays:
foreach ($array as $a) {
if (!in_array($id, (array) $a)) {
...
}
}
Assuming your array is names $yourArray
,
$newArr = array();
foreach ($yourArray as $key=>$value) {
$newArr[] = $value->id;
}
And now $newArr
is like : array(545,548,550,552,554)
AND you can search in it by :
$valueOfSearch = ... ;
$flag = 1;
if(!in_array($valueOfSearch,$newArr)) {
$flag = 0;
}