好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php数组与对象相互转换方法 - php数组

php数组与对象相互转换方法

php数组与对象相互转换方法

function  arrayToObject( $e ){       if (  gettype ( $e )!= 'array'  )  return ;       foreach ( $e   as   $k => $v ){           if (  gettype ( $v )== 'array'  ||  getType ( $v )== 'object'  )               $e [ $k ]=(object)arrayToObject( $v );      }       return  (object) $e ;  }    function  objectToArray( $e ){       $e =( array ) $e ;       foreach ( $e   as   $k => $v ){           if (  gettype ( $v )== 'resource'  )  return ;           if (  gettype ( $v )== 'object'  ||  gettype ( $v )== 'array'  )               $e [ $k ]=( array )objectToArray( $v );      }       return   $e ;  } 

关于数组转换为对象,在phpx有看到一些帖子讨论.

$andy  =  array ();  $andy [ 'a' ] = 1;  $andy [ 'b' ] = 2;  $andy [ 'c' ] = 3; 

把andy强制转换为数组,似乎引用的方便些了,主要是变成了->

$andy  =  array ();  $andy  = (object) $andy ;  $andy ->a = 1;  $andy ->b = 2;  $andy ->c = 3; 

还嫌它麻烦,再用StdClass

$andy  =  new  StdClass;  $andy ->a = 1;  $andy ->b = 2;  $andy ->c = 3; 

stdClass 是PHP的一个基类,所有的类几乎都继承这个类,所以任何时候都可以被new,可以让这个变量成为一个object,同时,这个基类又有一个特殊的地方,就是没有方法,在这里,还有一点是对象和数组资源耗费的问题:PHP5的对象的独特性,对象在任何地方被调用,都是引用地址型的,所以相对消耗的资源会少一 点,在其它页面为它赋值时是直接修改,而不是引用一个拷贝,数组在程序的使用中应该是最方便的,然而数组的每次被引用($a = $b),其实都是创建了一个副本,而且,数组被unset后,还是占用了内存(没有测试过),还有一个函数arrayobject,可以直接将数组转化为 对象这也是一个好办法.

ArrayObject::__construct -- Construct a  new   array  object  <?php  $array  =  array ( '1'  =>  'one' ,  '2'  =>  'two' ,  '3'  =>  'three' );  $arrayobject  =  new  ArrayObject( $array );  print_r( $arrayobject );  ?>  ArrayObject Object  (      [1] => one      [2] => two      [3] => three  ) 

试验了一下对象转换为数组,也可以强制转换:

$arr = (array)$obj;

如下例子转换结果,可对比:

Tag Object  (      [name] => main      [text] =>       [parrent] =>       [content] =>       [props] => Array          (          )        [inner] => Array          (          )        [level] => 0  )    Array  (      [name] => main      [text] =>       [parrent] =>       [content] =>       [props] => Array          (          )        [inner] => Array          (          )        [level] => 0  ) 

查看更多关于php数组与对象相互转换方法 - php数组的详细内容...

  阅读:50次