引用賦值$和傳值賦值

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


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