如何检查stdclass对象数组中是否有数组值

时间:2011-09-20 09:24:27

标签: php arrays object

我正在尝试检查这个std对象数组中是否有可用的id,我不想循环遍历数组,因为它不会显示正确的信息。我的代码如下:

  Array(
    [0] => stdClass Object
        (
            [name] => My Name
            [id] => 1234567890
        )
    [1] => stdClass Object
        (
            [name] => Other User Name
            [id] => 987654321
        )
  )

我尝试使用in_array方法,但它找不到id键和值。

谢谢 d ~~

2 个答案:

答案 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
    }
}