引用賦值$和傳值賦值
阿新 • • 發佈:2019-02-05
一.$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()掉,那麼桌子上的飯菜才能真正的清掉