PHP对象如何进行浅复制
时间:2021-07-05
来源:互联网
标签:
今天PHP爱好者给大家带来赋值时,引用赋值相当于取了一个别名;对其中一个修改会影响另一个。PHP中赋值时,普通对象是深拷贝,但对对象来说是浅复制。也就是说,对象的赋值是引用赋值。下面介绍一下php对象的浅复制,有需要的可以参考参考。希望对大家有所帮助。

上周遇到一个低级的 bug,半天没有找到问题所在,今天在蹲坑的时候,不知道为何脑子中想起了这个 bug, 然后突然意识到是否是因为没有进行对象 clone 造成的。
果然,问题就是因为在多次遍历同一个 laravel collection 时,反复对同一个对象的属性进行操作,导致后面的操作覆盖了之前的操作,所以在最终返回结果时,只保留了最后一次的操作结果。
浅复制(shallow copy)
$copy_of_object = clone $object;
来做一个测试
<?php
class City {
public $name;
}
$c1 = new City;
$c1->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爱好者其它相关文章!
-
PHP目录分隔符DIRECTORY_SEPARATOR常量用法详解 时间:2025-11-21 -
awk数组用法详解(创建、删除、检查、遍历、排序等) 时间:2025-11-21 -
ActionContext构造函数详解 时间:2025-11-21 -
Android ArrayAdapter适配器作用及用法详解 时间:2025-11-21 -
什么是数据库备份?数据库备份有几种方式? 时间:2025-11-21 -
Oracle数据库备份和恢复的几种方法详解 时间:2025-11-21
今日更新
-
抖音火山版网页版官网-抖音火山版网页登录入口
阅读:18
-
欧易合约盘口异常消失原因及应对策略解析
阅读:18
-
deepseek网页版快速登录入口-deepseek在线高效使用指南
阅读:18
-
比特币入门指南_从零开始了解比特币的基础知识
阅读:18
-
欧易理财脱锚事件如何冲击加密市场走势
阅读:18
-
山是什么梗网络热词揭秘 搞笑内涵段子来源解析
阅读:18
-
山水集团是什么梗揭秘其背后爆火原因及真实含义解析
阅读:18
-
学信网四六级成绩查询入口_四六级分数一键查
阅读:18
-
欧易功能模块卡顿问题解析与优化方案
阅读:18
-
比特币到底是什么_简单易懂的加密货币解说
阅读:18










