php中对象转换数组与数组转换对象实例

本文章来介绍了在php中如何把数组转换成对象或是把对象转换成数组对象,用stdClass转换数组为对象,代码如下:

  1. $arr = array();
  2. $arr['a'] = 1;
  3. $arr['b'] = 2;
  4. $arr['c'] = 3;
  5. $arr = array();
  6. $arr['a'] = 1;
  7. $arr['b'] = 2;
  8. $arr['c'] = 3;

用stdClass转换后,代码如下:

  1. $object = new StdClass;
  2. $object->a = 1;
  3. $object->b = 2;
  4. $object->c = 3;
  5. $object = new StdClass;
  6. $object->a = 1;
  7. $object->b = 2;
  8. $object->c = 3;

stdClass是PHP的一个基类,所有的类几乎都继承这个类,所以任何时候都可以被new,可以让这个变量成为一个object,同时,这个基类又有一个特殊的地方,就是没有方法.

我应用的地方是simplexml中的simplexml_load_string()上,因为返回的全是对象,如果提取数据比较麻烦,所以应用了下面的函数,代码如下:

  1. function object_to_array($obj)
  2. {
  3. $_arr = is_object($obj) ? get_object_vars($obj) : $obj;
  4. foreach ($_arr as $key => $val)
  5. {
  6. $val = (is_array($val) || is_object($val)) ? object_to_array($val) : $val;
  7. $arr[$key] = $val;
  8. }
  9. return $arr;
  10. }

数组转换成对象,代码如下:

  1. <?php
  2. $array = array(1 => php,
  3. 2 => java,
  4. 3 => c );
  5. $arrayobject = new ArrayObject($array);
  6. var_dump($arrayobject);
  7. ?>
  8. //运行结果如下:
  9. //object(ArrayObject)#1 (1) { ["storage":"ArrayObject":private]=> array(3) { [1]=> string(3) "php" [2]=> string(4) "java" [3]=> string(3) "c " }}

一个类:ArrayObject,可以直接将数组转化为对象,代码如下:

  1. $array = array('1' => 'one',
  2. '2' => 'two',
  3. '3' => 'three');
  4. $arrayobject = new ArrayObject($array);
  5. var_dump($arrayobject);
  6. $array = array('1' => 'one',
  7. '2' => 'two',
  8. '3' => 'three');
  9. $arrayobject = new ArrayObject($array);
  10. var_dump($arrayobject);
  11. /*
  12. 结果如下:
  13. Php代码
  14. object(ArrayObject)#1 (3) {
  15. [1]=>
  16. string(3) "one"
  17. [2]=>
  18. string(3) "two"
  19. [3]=>
  20. string(5) "three"
  21. } */