如何使用in_array php函数搜索std对象(对象数组)的数组?

时间:2014-01-22 05:35:40

标签: php arrayobject

我有以下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;
}

???我希望在std对象的[id]键数组中搜索。

任何人都能帮助我吗?

4 个答案:

答案 0 :(得分:2)

如果数组不是太大或需要多次执行测试,则可以映射数组中的属性:

$ids = array_map(function($item) {
    return $item->id;
}, $array);

然后:

if (!in_array($value->id, $ids)) { ... }

答案 1 :(得分:1)

尝试:

foreach ($array as $val) {
 if (!in_array($id, (array) $val)) {
 ...
 }
}

答案 2 :(得分:0)

为什么不将对象转换为数组:

foreach ($array as $a) {
     if (!in_array($id, (array) $a)) {
     ...
     }
}

答案 3 :(得分:0)

假设您的数组是名称$yourArray

$newArr = array();
foreach ($yourArray as $key=>$value) {
    $newArr[] = $value->id;
}

现在$newArr就像:array(545,548,550,552,554)

AND 您可以通过以下方式进行搜索:

$valueOfSearch = ... ;
$flag = 1;
if(!in_array($valueOfSearch,$newArr)) {
    $flag = 0;
}