我有以下数组(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';
}
答案 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
中