数组是PHP的灵魂,非常强大,但有时候面向对象编程也是挺方便的,数组 与 对象 之间切换也是常有的事:
例子一:
- /**
- * 数组 转 对象
- *
- * @param array $arr 数组
- * @return object
- */
- function array_to_object($arr)
- {
- if (gettype($arr) != 'array')
- {
- return;
- }
- foreach ($arr as $k => $v)
- {
- if (gettype($v) == 'array' || getType($v) == 'object')
- {
- $arr[$k] = (object)array_to_object($v);
- }
- }
- return (object)$arr;
- }
- /**
- * 对象 转 数组
- *
- * @param object $obj 对象
- * @return array
- */
- function object_to_array($obj)
- {
- $obj = (array)$obj;
- foreach ($obj as $k => $v)
- {
- if (gettype($v) == 'resource')
- {
- return;
- }
- if (gettype($v) == 'object' || gettype($v) == 'array')
- {
- $obj[$k] = (array)object_to_array($v);
- }
- }
- //Vevb.com
- return $obj;
- }
例子2:
- <?php
- class Test{
- public $a;
- public $b;
- public function __construct($a) {
- $this->a = $a;
- }
- }
- //对象转数组,使用get_object_vars返回对象属性组成的数组
- function objectToArray($obj){
- $arr = is_object($obj) ? get_object_vars($obj) : $obj;
- if(is_array($arr)){
- return array_map(__FUNCTION__, $arr);
- }else{
- return $arr;
- }
- }
- //数组转对象
- function arrayToObject($arr){
- if(is_array($arr)){
- return (object) array_map(__FUNCTION__, $arr);
- }else{
- return $arr;
- }
- }
- $test = new Test('test1');
- $test->b = new Test('test2');
- print_r($test);
- $array = objectToArray($test);
- print_r($array);
- $object = arrayToObject($array);
- print_r($object);
新闻热点
疑难解答