0

我有以下标准对象数组

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 Object 的键数组中搜索[id]

任何人都可以帮助我吗?

4

4 回答 4

3

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

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

进而:

if (!in_array($value->id, $ids)) { ... }
于 2014-01-22T05:39:33.290 回答
1

尝试:

foreach ($array as $val) {
 if (!in_array($id, (array) $val)) {
 ...
 }
}
于 2014-01-22T05:53:25.413 回答
0

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

foreach ($array as $a) {
     if (!in_array($id, (array) $a)) {
     ...
     }
}
于 2014-01-22T05:50:33.677 回答
0

假设您的数组是 names $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;
}
于 2014-01-22T05:51:27.637 回答