图示所写 变量赋的值为对象类型默认是引用传值。也就是指向同一个内存空间
下面给出另一段代码和结果图
结果如下
问题:既然变量赋值类型为对象都是引用传值,为什么结果来看,$assigned更像是赋值传值,如果是引用传值,改变为null,三个变量不是都应该为null吗?!
3 回答
浮云间
TA贡献1829条经验 获得超4个赞
不知道你知不知道深复制和浅复制,值的复制,是深复制,就是说改变了就改变了,不会影响另外一个:例如
$a=1;
$b=$a;
$a=2
echo $a;//2
echo $b;//1
对象的复制是浅复制,他的更改会影响到另外一个,这个楼主你应该懂,所以,当assigned=$instance,后,对instance的修改,会影响assigned ,如果没有最后的null,$instance和assigned是一样的。关键就是最后的null,null其实也是一个对象,说到这里,我相信你应该明白了,$instance=null,这个时候,instance被指向了另外一个对象(跟assigned没半毛钱关系了),而reference又是指向instance,跟着也指向了null对象,所以你明白了么?
- 3 回答
- 0 关注
- 675 浏览
添加回答
举报
0/150
提交
取消