把变量存储值当成文件存储内容来理解,普通赋值就是文件复制,引用赋值就是建立快捷方式,明白了吧。
对象传智实际传的是对象标识符。当使用值传递的时候,作传值用的p1的标识符会被传递给被传值对象p2。此时,若修改p1的标识符(重建该对象即可),p2的标识符是不会改变的(p1 p2只是标识符相同的两个独立的对象)。但若为引用传值,p2的标识符是会随着p1的标识符一起改变。
//普通赋值(常用)
$a = 1;//定义并且赋值a等于1
$b = $a;//把a里面的值1“复制”给b
$a = 3;//给a重新赋值等于3,程序结束,b没有发生变化依然等于1。
echo $a.$b;//输出31
//地址引用赋值
$a = 1;//定义并且赋值a等于1
$b = &$a;//b的值存a的地址,指向a,注意:是地址。
//相当于指针指向了a(但是有区别)。
//实际上是告诉电脑,b的值存在a那里,a参数的存储地址相对b共享
$a = 3;//给a重新赋值。
echo $a.$b;//输出33,a实际赋值结果,b地址指向的那个存储地址里面的存值
形象的举例说明:A盒子里有一份文件,名称:c
普通赋值:拿A盒子的文件去复印一份,然后放在B盒子里。此时,两个盒子里都各自有内容相同的一份文件。
后面不管你往A里仍什么进去,B还是只有最初的那份文件。
引用赋值:B盒子里面只是放着一张纸条,写着文件放在A盒子里,请去A盒子里拿。
后面,不管你给A盒子放什么,需要B盒子里的文件的人,都去A盒子里拿,拿到什么就要看,A里面放着什么了。