PHP对象与数组互相转换

时间 : 16-12-03 栏目 : PHP 作者 : 江上轻烟 评论 : 0 点击 : 706 次

工作中不可避免会遇到php对象与数组的相互转化,下边对其方法做了简单的总结。

1.强制转化

$arr = (array) $obj;      $obj = (object) $arr;

优点:比较简洁

缺点:不能递归转化

适用范围:无嵌套数组,无嵌套类的转化

2.自定义方法

object2array ,array2object

/**

*  对象转为数组

*/

function object2array($obj) {

$ret = array();

foreach ($obj as $key => $value) {

if (gettype($value) == "array" || gettype($value) == "object"){

$ret[$key] =  object2array($value);

}else{

$ret[$key] = $value;

}

}

return $ret;

}

/**

*  数组转对象

*/

function array2object($obj){

if( gettype($obj)!='array' ) return;

foreach($obj as $k=>$v){

if( gettype($v)=='array' || getType($v)=='object' )

$obj[$k]=array2object($v);

}

return (object)$obj;

}

优点:可以处理嵌套

缺点:需添加对应函数到系统

适用范围:ALL

3.利用内置函数

json_decode(json_encode($arr), false)         json_decode(json_encode($arr), true)

优点:简洁、可处理嵌套

缺点:每次转化都是先执行一次json_encode,再执行一次json_decode,直观判断运行效率会低一些

适用范围:ALL

特别注意:

1.$arr = (array) $obj;这种转换对象的方法,public、private、protected属性都能转化,而其他两种方法则只能转化public属性

2.无论哪种方法都是只转化类的属性,不转化类的方法

本文标签

除非注明,文章均为( 江上轻烟 )原创,转载请保留链接: http://www.zhizhi123.com/?p=346


0