PHP对象如何进行浅复制

赋值时,引用赋值相当于取了一个别名;对其中一个修改会影响另一个。php中赋值时,普通对象是深拷贝,但对对象来说是浅复制。也就是说,对象的赋值是引用赋值。下面介绍一下php对象的浅复制,有需要的可以参考参考。

PHP对象如何进行浅复制

上周遇到一个低级的 bug,半天没有找到问题所在,今天在蹲坑的时候,不知道为何脑子中想起了这个 bug, 然后突然意识到是否是因为没有进行对象 clone 造成的。

果然,问题就是因为在多次遍历同一个 laravel collection 时,反复对同一个对象的属性进行操作,导致后面的操作覆盖了之前的操作,所以在最终返回结果时,只保留了最后一次的操作结果。

浅复制(shallow copy)

立即学习“PHP免费学习笔记(深入)”;

$copy_of_object = clone $object;

登录后复制

来做一个测试

name = "烟台";echo $c1->name;    // 烟台echo PHP_EOL;$c2 = $c1;echo $c2->name;   // 烟台echo PHP_EOL;$c1->name = "威海";echo $c2->name;   // 威海echo PHP_EOL;$c3 = clone $c1;echo $c3->name;  // 威海echo PHP_EOL;$c1->name = "青岛";echo $c3->name;  // 威海echo PHP_EOL;

登录后复制

测试结果

php /tmp/test.php烟台烟台威海威海威海

登录后复制

为何称之为浅复制呢?

与之对应的是深复制。因为浅复制情况下,对象的属性如果还是对象的话,该属性还是指向同一个对象。

推荐学习:php视频教程

以上就是PHP对象如何进行浅复制的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2510928.html

(0)
上一篇 2025年3月5日 14:20:29
下一篇 2025年2月27日 00:57:00

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论