我需要从数组中找到一个元素。我知道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";
}
答案 0 :(得分:2)
那是因为你的数组不包含id,而是只包含1个属性的对象,称为id
。
假设您的数据是查询的结果,请考虑更改获取模式,因为它可能设置为object
ATM。
目前:
$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';
}
使用数组函数和回调,直到找到适合你的东西
答案 1 :(得分:0)
你需要用foreach循环它。
答案 2 :(得分:0)
只需遍历数组并检查每个项目的属性:
foreach($some_array as $item) {
if($item->id === 11) {
// We've found item #11!
}
}