smarty模板的foreach不支持对像,只支持数组。对于json格式的数据,只能先转换为数组后方可使用foreach。
转换方法之一是直接使用 (array),如:
$array = (array)$obj;
经测试,此种方法只支持一层数据结构,对于$obj->obj1->obj2此类数据无法转换
转换方法之二是编写递归函数转换,如:
/**
* 对象转数组
*
* @param object $obj
* @return array
*/
function object_to_array($obj)
{
$_arr = is_object($obj) ? get_object_vars($obj) : $obj;
foreach ($_arr as $key => $val)
{
$val = (is_array($val) || is_object($val)) ? object_to_array($val) : $val;
$arr[$key] = $val;
}
return $arr;
}