php对象和数组相互转换的方法

这篇文章主要介绍了php对象和数组相互转换的方法,经过两个自定义函数实现对象与数组的相互转换功能,很是简单实用,须要的朋友能够参考下。php

###1、对象和数组互转 本文实例讲述了php对象和数组相互转换的方法。分享给你们供你们参考。具体分析以下: 这里定义2个php匿名对象和数组相互转换的函数,代码以下:数组

function array2object($array) {
  if (is_array($array)) {
    $obj = new StdClass();
    foreach ($array as $key => $val){
      $obj->$key = $val;
    }
  }
  else { $obj = $array; }
  return $obj;
}
function object2array($object) {
  if (is_object($object)) {
    foreach ($object as $key => $value) {
      $array[$key] = $value;
    }
  }
  else {
    $array = $object;
  }
  return $array;
}

用法示例以下:函数

$array = array('foo' => 'bar','one' => 'two','three' => 'four');
$obj = array2object($array);
print $obj->one; // output's "two"
$arr = object2array($obj);
print $arr['foo']; // output's bar

###2、关于stdClass的理解google

$user = new stdClass();
$user->name = 'gouki';

这样的代码,这是干吗用的呢? 翻开手册,搜索stdClass,你会发现,手册上几乎没有介绍,若是你再次搜索google,看到的也几乎全是英文解释。 其实,stdClass在PHP5才开始被流行。而stdClass也是zend的一个保留类。彷佛没有其余做用。也几乎没有任何说明。 或者,咱们能够这么理解:stdClass是PHP的一个基类,全部的类几乎都继承这个类,因此任什么时候候均可以被new,可让这个变量成为一个object。同时,这个基类又有一个特殊的地方,就是没有方法。 凡时用new stdClass()的变量,都不可能会出现$a->test()这种方式的使用。 或者,咱们能够又这么理解一下,正由于PHP5的对象的独特性,对象在任何地方被调用,都是引用地址型的,因此相对消耗的资源会少一点。在其它页面为它赋值时是直接修改,而不是引用一个拷贝。code

相关文章
相关标签/搜索