YII对象结果转为数组或直接输入JSON格式(转)

转换为数组组的方法

使用Yii 的Active Record 来获取查询结果的时候,返回的结果集是一个对象类型的,有时候为了数据处理的方便希望能够转成数组返回。比如下面的方法:

1 // 查找满足指定条件的结果中的第一行  
2 $post=Post::model()->find($condition,$params);  
3 // 查找具有指定主键值的那一行  
4 $post=Post::model()->findByPk($postID,$condition,$params);  
5 // 查找具有指定属性值的行  
6 $post=Post::model()->findByAttributes($attributes,$condition,$params);  

返回一条结果的时候直接用 $post->attributes; 就可以了。

 

如果要返回FindAll数组呢,要怎么处理呢

有两种方法:

第一种是使用自定义的函数,如下

1 /** 
2  * 简化findall数据 
3  * */  
4 function simplifyData($data){  
5     foreach($data as $key=>$val){  
6         $newData[$key] = $val->attributes;  
7     }  
8     return $newData;  
9 }  

然后使用函数直接转换结果

第二种是使用很简单的方法:

 1 $products = ProTuan::model()->findAll($criteria); 2 $products = json_decode(CJSON::encode($products),TRUE);  

 

作用是就先将findAll结果先转成JSON格式,然后再转为数组.

至于findALL转为JOSN格式其实就是使用

 1 CJSON::encode  

 

转自http://blog.csdn.net/xinqingch/article/details/39026555

posted @ 2017-12-01 11:06  顾遥  阅读(336)  评论(0)    收藏  举报