php 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 "
";
    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 . "

"; //index
echo $b . "
"; //demo
echo $c; //index
?>

发表新评论