php clone
问题其实很简单,今天在测试clone的时候,发现了一些问题,总结一下,我们都知道PHP的值传递和引用传递,正如我在上面的举例代码的最下面,$a赋值给$b,改变$a的值,$b的值不会改变。
问题其实很简单,今天在测试clone的时候,发现了一些问题,总结一下,
我们都知道PHP的值传递和引用传递,正如我在上面的举例代码的最下面,$a赋值给$b,改变$a的值,$b的值不会改变。$c的值就会随同$a一起改变,因为他们就是相同的地址。
问题来了。我开始以为对象也是这样,但是我测试的是对象赋值,并不和我的结果相一致,如上图所示的,我们可以看到,$a,$b的值是一样的,$c,也是,只有$d 不是。由此我得出结论,赋值的时候是指向相同的地址。如果想要复制的话,可以使用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
?>
- 上一篇:简单的url路由控制[PHP]
- 下一篇:byte(字节)转换为mb(兆)
精彩图集
精彩文章






