• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP数组转对象的几种方法

php 搞代码 4年前 (2022-01-23) 13次浏览 已收录 0个评论
文章目录[隐藏]

今天在做产品的时候无意中看到了一行代码,

$c= new$class_name;                                                        $object_os= newstdClass;                                                        $c->on_init_app_router($object_os);

很疑惑,于是去类$c中看了一下,发现原来是对空类stdClass的实例$object_os进行了一些属性的动态添加。

从上面的三行代码中大致能看出来stdClass能为我们做些什么。

stdClass在产品的代码中见过几次,但是自己没有用过,于是查了一下相关资料,把心得整理总结如下。

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

stdClass是在PHP5中逐渐流行起来的,这是因为,PHP5的对象的独特性,对象在任何地方被调用,都是引用地址型的,所以相对消耗的资源会少一些。在其它页面为它赋值时是直接修改,而不是引用一个拷贝。

例如:

$user= newstdClass();$user->name = ‘gouki’;$myUser= $user;$myUser->name = ‘flypig’;

如果在PHP4时代,这样的代码就是在消耗系统资源。因为:

$myUser= $user;

这是创建了一个拷贝。所以,在PHP4的时候,都是这样使用:

$myUser= & $user;

从文章开始的三行代码我们可以看到,stdClass可以用来生成对象类型的元素,那么接下来,我们就通过stdClass将一个数组转为为对象类引出几种数组对象相互转换的方法:

一、stdClass数组转对象

$arr= array();                                            $arr['<div>本文#来源gaodai.ma#com搞##代!^码7网</div><pre>搞代gaodaima码

a’] = 1; $arr[‘b’] = 2; $arr[‘c’] = 3; $object= newstdClass;foreach($arras$key=> $value) { $object->$key= $value;} var_dump($object);

结果输出如下:

object(stdClass)#1 (3) {  ["a"]=>  int(1)  ["b"]=>  int(2)  ["c"]=>  int(3)}

二、对象转数组

functionobject_to_array($obj) {     $_arr= is_object($obj) ? get_object_vars($obj) : $obj;     foreach($_arras$key=> $val)     {         $val= (is_array($val) || is_object($val)) ?       object_to_array($val) : $val;         $arr[$key] = $val;     }     return$arr; }

三、ArrayObject方法数组转对象

$arr= array('key1'=>'test1', 'key2'=> 'test2');           var_dump(newArrayObject($arr));

结果输出如下:

object(ArrayObject)#1 (1) {  ["storage":"ArrayObject":private]=>  array(2) {    ["key1"]=>    string(5) "test1"    ["key2"]=>    string(5) "test2"  }}

当然PHP强大灵活决定了必定还有很多其他方法进行数组与对象的转换。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP数组转对象的几种方法

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址