1. 程式人生 > >引用賦值$和傳值賦值

引用賦值$和傳值賦值

一.$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()掉,那麼桌子上的飯菜才能真正的清掉