引用赋值$和传值赋值

一.$a=3   $b=5

/如果是新手的话,可能会对这个'='号产生误会,  这个等号 就是赋值用的.

$b=$a;

//$b = $a ;

//发生了什么?   把$b的值读出来,再把值放到$b的空间里,即 赋值给$b;

//就是把$b的值,传递给$a,因此叫传值赋值.

echo $a; //5

//在这个过程中,仅仅参考了一个$b的值,然后,把$b的值,复制一份到a的空间里去了

//之后,$a,$b,两者之间还是没有关系,因为$a  $b的值还是放在了各自的空间里

 二. $a=3   $b = 5  ;

//下面这行代码

//把$a这把钥匙的指向,指向了$b的地址.

//即:$a , $b   指向同一个地址

//就像,两把钥匙指向了同一个房间

$a   = &$b;

echo  $a .$b // 5 5 ;

$b = 9;

echo $a , $b // 99;

//----------------------------------看看下面的问题------------------------------------//

unset($b);

echo  $a;//9

/*

原因很简单

因为有$a,$b连个变量指向了同一地址,

$b销毁了,$a没有销毁

变量有一个机制,当某段地址存的值,有一个变量在指向他的时候,就不会被回收.(这也是简单的回收机制)


张三===>[饭桌]<===李四

张三,转一下桌子,在李四看来,桌子的盘子的盘子也变了,  $a,$b值,一改全改

unset($b);

张三 人走了,但是李四还没有走,服务员是否会去清理桌子吗?

答案:不会的,因为还有李四坐在桌子前


如果,李四走了,也给unset()掉,那么桌子上的饭菜才能真正的清掉


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章