-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.
假设您的数据是查询的结果,请考虑更改获取模式,因为它可能设置为objectATM。

目前:

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

或者,如果您不想弄乱 fetch-mode,您可以使用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 回答