php in_array返回stdClass错误

时间:2015-06-10 08:21:12

标签: php arrays

我有以下数组(getyears),我正在努力引用,以返回“已检查”状态。

array (size=2)
  0 => 
    object(stdClass)[23]
      public 'year' => string '1' (length=1)
  1 => 
    object(stdClass)[25]
      public 'year' => string '3' (length=1)

我使用的in_array有点工作,但返回Severity:Notice Message:类stdClass的对象无法转换为int

 $array = (array)$getyears;
 if(in_array(2, $array)){
     echo ' checked';
 }

3 个答案:

答案 0 :(得分:1)

您需要在getAsArray()作为对象的类中实现方法$getyears

因此,您可以访问$array = $getyears->getAsArray()

你不能在一个对象中搜索,你的代码就是这样(伪代码) $array[0] == 2,但$array[0]是一个类,所以无法完成。

答案 1 :(得分:1)

您有多个对象。你需要从它的对象中获得数年。类似的东西:

$extractYears = function($obj) {
    return $obj->year;
};

return in_array(2, array_map($extractYears, $yourArray));

答案 2 :(得分:0)

/**
*
* Convert an object to an array
*
* @param    object  $object The object to convert
* @reeturn      array
*
*/
function objectToArray( $object )
{
    if( !is_object( $object ) && !is_array( $object ) )
    {
        return $object;
    }
    if( is_object( $object ) )
    {
        $object = get_object_vars( $object );
    }
    return array_map( 'objectToArray', $object );
}

/*** convert the array to object ***/
$array = objectToArray( $obj );

更多详细信息显示在http://www.phpro.org/examples/Convert-Object-To-Array-With-PHP.html