-1

配列から要素を見つける必要があります。メソッドについては知ってin_array()いますが、この種の配列では機能しません。

Array
(
[0] => stdClass Object
    (
        [id] => 7
    )

[1] => stdClass Object
    (
        [id] => 11
    )

[2] => stdClass Object
    (
        [id] => 12
    )
)

私が試してみました:

if(in_array($id, $some_array)) {
     echo "find";
} else {
    echo "not exist";
}
4

3 に答える 3

2

これは、配列に id 自体が含まれておらず、 と呼ばれるプロパティが 1 つしかないオブジェクトが含まれているためidです。データがクエリの結果であると仮定すると、おそらくATM
に設定されているため、フェッチ モードを変更することを検討してください。object

今のところ:

$msg = 'not found';
foreach($some_array as $obj)
{
    if ($obj->id == $id)
    {
        $msg = 'found';
        break;
    }
}
echo $msg;

あるいは、フェッチモードをいじりたくない場合は、次を使用できますarray_map

function toArray($obj)
{
    $obj = (array) $obj;//cast to array, optional
    return $obj['id'];
}
$idArray = array_map('toArray', $some_array);
if (in_array($id, $idArray))
{
    $msg = 'found';
}

自分に合ったものが見つかるまで、配列関数とコールバックをいじってみてください

于 2013-06-19T13:05:15.020 に答える
0

foreach でループする必要があります。

于 2013-06-19T13:02:46.807 に答える
0

配列をループして、各項目のプロパティを確認するだけです。

foreach($some_array as $item) {
    if($item->id === 11) {
        // We've found item #11!
    }
}
于 2013-06-19T13:02:55.230 に答える