龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

php clone

时间:2014-07-22 14:48来源: 作者: 点击:
分享到:
问题其实很简单,今天在测试clone的时候,发现了一些问题,总结一下,我们都知道PHP的值传递和引用传递,正如我在上面的举例代码的最下面,$a赋值给$b,改变$a的值,$b的值不会改变。
问题其实很简单,今天在测试clone的时候,发现了一些问题,总结一下,
我们都知道PHP的值传递和引用传递,正如我在上面的举例代码的最下面,$a赋值给$b,改变$a的值,$b的值不会改变。$c的值就会随同$a一起改变,因为他们就是相同的地址。
问题来了。我开始以为对象也是这样,但是我测试的是对象赋值,并不和我的结果相一致,如上图所示的,我们可以看到,$a,$b的值是一样的,$c,也是,只有$d 不是。由此我得出结论,赋值的时候是指向相同的地址。如果想要复制的话,可以使用clone。希望能帮到大家!了解一下!
<?php
class A{
	public $name = "demo";
}

$a = new A();
$b = $a;
$c = &$a;
$d = clone $a;

$a->name = "index";
echo "<pre>";
var_dump($a->name);   //index
var_dump($b->name);   //index
var_dump($c->name);   //index
var_dump($d->name);   //demo

$a = "demo";
$b = $a;
$a = "index";
$c = &$a;
echo $a . "<br/>";   //index
echo $b . "<br/>";   //demo
echo $c;             //index
?>

精彩图集

赞助商链接