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

php浅拷贝和深拷贝

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

在PHP中, “=” 作为赋值符号,对于一般变量是深拷贝,对于对象来说是浅拷贝(对象的赋值是援用赋值)。
对象作为参数传递时,也是援用传递,无论函数定义时参数后面是否有&符号。

概念:

深拷贝:赋值时值齐全复制,齐全的copy,对其中一个作出扭转,不会影响另一个

浅拷贝:赋值时,援用赋值,相当于取了一个别名。对其中一个批改,会影响另一个

实际

PHP中, “=” 赋值时,一般对象是深拷贝,然而对象来说,是浅拷贝。也就是说,对象的赋值是援用赋值。(对象作为参数传递时,也是援用传递,无论函数定义时参数后面是否有&符号)

<?php
class A
{
 public $aa = 100;
}
$a1 = new A();
$a2 = $a1;
$a1->aa = 200;
echo $a2->aa; // 输入200
echo PHP_EOL;

要是想实现值的复制,php提供了clone函数来实现复制对象。
例如:

<?php
class A
{
 public $aa = 100;
}
$a1 = new A();
// 应用clone 实现复制对象
$a2 = clone $a1;
$a1->aa = 200;
echo $a2->aa; // 输入100
echo PHP_EOL;

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php浅拷贝和深拷贝
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

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

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

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