一维数组:数组
$andy = array();函数
$andy['a'] = 1;测试
$andy['b'] = 2;google
$andy['c'] = 3;spa
我想把它变成这样对象
$andy = array();继承
$andy = (object)$andy;内存
$andy->a = 1;资源
$andy->b = 2;class
$andy->c = 3;
新建空数组只要$andy = array();
新建空对像却要$andy = new Andy; 并且还得先有个class Andy{}
或者得2行
$andy = array();
$andy = (object)$andy;
用array直接改类型成object有点别扭,往下看:
$user = new stdClass();
$user->name = 'gouki';
这样的代码,这是干吗用的呢?
翻开手册,搜索stdClass,你会发现,手册上几乎没有介绍,若是你再次搜索google,看到的也几乎全是英文解释。其实,stdClass在PHP5才开始被流行。而stdClass也是zend的一个保留类。彷佛没有其余做用。也几乎没有任何说明。
或者,咱们能够这么理解:stdClass是PHP的一个基类,全部的类几乎都继承这个类,因此任什么时候候均可以被new,可让这个变量成为一个object。同时,这个基类又有一个特殊的地方,就是没有方法。凡时用new stdClass()的变量,都不可能会出现$a->test()这种方式的使用。或者,咱们能够又这么理解一下,正由于PHP5的对象的独特性,对象在任何地方被调用,都是引用地址型的,因此相对消耗的资源会少一点。在其它页面为它赋值时是直接修改,而不是引用一个拷贝。
例如:
$user = new stdClass();
$user->name = 'gouki';
$myUser = $user;
$myUser->name = 'flypig';
若是在PHP4时代,这样的代码就是在消耗系统资源。由于:
$myUser = $user;
这是建立了一个拷贝。因此,在PHP4的时候,都是这样使用:
$myUser = & $user;
有人说,为何不用数组呢?数组不是更方便吗?并且对于PHP这样的弱类型程序来讲,用数组应该是最方便的。确实。数组在程序的使用中应该是最方便的,然而数组的每次被引用($a = $b),其实都是建立了一个副本,并且,数组被unset后,仍是占用了内存(这个是听人说来的,我没有测试……也不知道怎么测试,若是有人知道,请告诉我,谢谢 )
不过SPL的标准类库里,还有一个函数arrayobject,能够直接将数组转化为对象这也是一个好办法哦。