秋季,黑彤彤的平棼扒开绿叶往中瞧;小黑灯笼似的枣子挂谦了枝头;像紫玛瑙的葡萄一串串天挂正在葡萄架下,真诱人呀!
上午在做一个php项目时,遇到了一个对象与数组之间相互转换的问题,就随手写了两个关于对象转数组,数组转对象的自定义函数,记录一下,分享有需要的童鞋。
php 数组转对象的函数
函数代码:
<?php function arr_to_obj($arr){ $obj = null; if (is_array($arr)) { $obj = new StdClass(); foreach ($arr as $key => $a){ $obj->$key = $a; } } if (is_object($arr)){ $obj = $arr; } return $obj; } ?>
函数调用方法:
<?php //这是一个数组 $arr = array('name' => '小明','sex' => 16); $obj = arr_to_obj($arr); echo $obj->name; // 输出结果: 小明 ?>
注:
stdClass类是一个没有成员变量也没有成员方法的类,它所有的魔术方法,父类、接口等在初始化时都被设置成NULL。由于在PHP中对于一个类我们无法动态的添加方法, 所以这个类只能用来处理动态属性,这也是我们一种常见的用法。
php 对象转数组的函数
函数代码:
<?php function obj_to_arr($obj){ $array = array(); if (is_object($obj)){ foreach ($obj as $key => $a) { $array[$key] = $a; } } if(is_array($obj)){ $array = $obj; } return $array; } ?>
函数调用:
<?php //创建一个类,并添加对象 $obj = new StdClass(); $obj->Name = ''; $obj->Host = 'http://www.feiniaomy.com'; $arr = obj_to_arr($obj); var_dump($arr); ?>
输出结果:
array(2) { ["Name"]=> string(18) "" ["Host"]=> string(24) "http://www.feiniaomy.com" }
补充说明:
is_object():用于检测变量是否是一个对象。
is_array():用于检测变量是否是一个数组
系统函数数组与对象的互转
1、对象转数组
<?php $obj = new StdClass(); $obj->Name = '小红'; $obj->Sex = '16'; //这里开始转换 // json_encode() 函数的第二个参数true $arr = json_decode(json_encode($obj),true); var_dump($arr); ?>
打印结果:
array(2) { ["Name"]=> string(6) "小红" ["Sex"]=> string(2) "16" }
2、数组转对象
<?php $arr = array('id'=>1,'name'=>'aaa'); // json_encode() 函数的第二个参数未设置,默认为 false $obj = json_decode(json_encode($arr)); var_dump($obj); ?>
打印结果:
object(stdClass)#3 (2) { ["id"]=> int(1) ["name"]=> string(3) "aaa" }
php 数组与对象互转的其它方法
<?php /** * 数组 TO 对象 * * @param array $arr 数组 * @return object */ function arrayToObject($arr) { if (gettype($arr) != 'array') { return; } foreach ($arr as $k => $v) { if (gettype($v) == 'array' || getType($v) == 'object') { $arr[$k] = (object)arrayToObject($v); } } return (object)$arr; } /** * 对象 TO 数组 * * @param object $obj 对象 * @return array */ function objectToArray($obj) { $obj = (array)$obj; foreach ($obj as $k => $v) { if (gettype($v) == 'resource') { return; } if (gettype($v) == 'object' || gettype($v) == 'array') { $obj[$k] = (array)objectToArray($v); } } return $obj; } ?>
以上就是php中数组和对象互转换的方法。生活这场表演,更需要百遍练习,才可能换来一次美丽。更多关于php中数组和对象互转换的方法请关注haodaima.com其它相关文章!