数组看起来像:
[0] => stdClass Object
(
[ID] => 420
[name] => Mary
)
[1] => stdClass Object
(
[ID] => 10957
[name] => Blah
)
...
我有一个整数变量$v。
我如何选择一个数组条目,其中有一个对象的ID属性有$v值?
$arr = [
[
'ID' => 1
]
];
echo array_search(1, array_column($arr, 'ID')); // prints 0 (!== false)
上面的代码回显匹配元素的索引,如果没有则为false。
要得到相应的元素,可以这样做:
$i = array_search(1, array_column($arr, 'ID'));
$element = ($i !== false ? $arr[$i] : null);
Array_column既适用于数组的数组,也适用于对象的数组。
修复了@YurkaTim的一个小错误,你的解决方案为我工作,但增加了使用:
要在函数内部使用$searchedValue,可以在函数参数function ($e)后面使用($searchedValue)。
如果返回条件为真,array_filter函数只在$ needdobject时返回
如果$searchedValue是一个字符串或整数:
$searchedValue = 123456; // Value to search.
$neededObject = array_filter(
$arrayOfObjects,
function ($e) use ($searchedValue) {
return $e->id == $searchedValue;
}
);
var_dump($neededObject); // To see the output
如果$searchedValue是一个数组,我们需要检查一个列表:
$searchedValue = array( 1, 5 ); // Value to search.
$neededObject = array_filter(
$arrayOfObjects,
function ( $e ) use ( $searchedValue ) {
return in_array( $e->term_id, $searchedValue );
}
);
var_dump($neededObject); // To see the output