php浅拷贝和深拷贝

码农天地 -
php浅拷贝和深拷贝
在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;
特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。

php介绍

PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。

Tags 标签

phpclone

扩展阅读

加个好友,技术交流

1628738909466805.jpg