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(兆)
精彩图集
精彩文章