php深复制
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php深复制,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1529字,纯文字阅读大概需要3分钟。
内容图文
![php深复制](/upload/InfoBanner/zyjiaocheng/239/7e0edad83341476cb4029007f5628d29.jpg)
php
class test{ public $num = 100; } $a = new test(); $b = clone $a; $a->num = 200; echo $b->num;//100 class test{ public $num = 100; } $a = new test(); $b = $a; $a->num = 200; echo $b->num;//200 //数组 $a = [1,2,3]; $b = $a; $a[1] = 5; var_dump($b);//[1,2,3] $a = [1,2,3]; $b = &$a; $a[1] = 5; var_dump($b);//[1,5,3] //以上就是php的深复制,浅复制,对吗?
回复内容:
php
class test{ public $num = 100; } $a = new test(); $b = clone $a; $a->num = 200; echo $b->num;//100 class test{ public $num = 100; } $a = new test(); $b = $a; $a->num = 200; echo $b->num;//200 //数组 $a = [1,2,3]; $b = $a; $a[1] = 5; var_dump($b);//[1,2,3] $a = [1,2,3]; $b = &$a; $a[1] = 5; var_dump($b);//[1,5,3] //以上就是php的深复制,浅复制,对吗?
class SubTest {
public $num = 100;
}
class Test {
public $child;
function __construct($child){
$this->child = $child;
}
}
$a = new Test(new SubTest());
// 这里进行浅拷贝
$b = clone $a;
$b->child->num = 200;
// 以下
输出均是 200
echo $a->child->num, "\n";
echo $b->child->num, "\n";
class Test2 {
public $child;
function __construct($child){
$this->child = $child;
}
// clone 完成时,此方法会被调用,在此完成深拷贝动作
function __clone() {
$this->child = clone $this->child;
}
}
$a = new Test2(new SubTest());
// 这里进行深拷贝
$b = clone $a;
$b->child->num = 200;
// 以下输出是 100, 200
echo $a->child->num, "\n";
echo $b->child->num, "\n";
参考 PHP: 对象复制
题主的代码中包含了两个概念对象拷贝和引用。请参考 对象和引用 。
对于深复制和浅复制,不好描述,楼上的代码也体现出来了差别,在献上两张比较直观的图,这样好理解一点吧。浅复制
:深复制
:
内容总结
以上是互联网集市为您收集整理的php深复制全部内容,希望文章能够帮你解决php深复制所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。