这篇文章主要介绍了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