我正在尝试检查这个std对象数组中是否有可用的id,我不想循环遍历数组,因为它不会显示正确的信息。我的代码如下:
Array( [0] => stdClass Object ( [name] => My Name [id] => 1234567890 ) [1] => stdClass Object ( [name] => Other User Name [id] => 987654321 ) )
我尝试使用in_array方法,但它找不到id键和值。
谢谢 d ~~
答案 0 :(得分:2)
您需要循环数组以检查数组内对象的属性。编写一个将返回所需值的函数,如(伪代码):
function returnObjectForId($idToMatch){
foreach ($array as $i => $object) {
if($object->id == $idToMatch){
return $object
}
}
}
答案 1 :(得分:0)
在Anzeo的回答的帮助下,我升级了一点以与其他属性一起使用并在条件语句中使用,请看一眼:
function my_in_array($needle, $haystack = array(), $property){
foreach ($haystack as $object) {
if($object->$property == $needle){
return true;
} else {
return false;
}
}
}
foreach($foo as $bar) {
if(!my_in_array($bar, $arrWithObjects, 'id')) {
//do something
}
}
希望这对其他人有用
编辑我还发现了一个很好的技巧,可以将对象的属性转换为数组,这在某些情况下可能有所帮助。
foreach($arrWithObjects as $obj) {
$objProps = get_object_vars($obj);
if(in_array('My Name', $objProps)) {
//do something
}
}