php引用變量這樣理解最簡單

php引用變量是爲了使用不同的變量名字來訪問同一個變量內容。其使用方法就是在變量或者函數、對象等前面加上&符號。
php引用變量怎麼理解

<?php
$a=1;
$b=$a;
$a=2;
echo $b;//輸出結果爲1

上面的程序很簡單大家都能看懂,

<?php
$a=1;
$b=&$a;
$a=2;
echo $b;//輸出結果爲2

對比兩段代碼你會發現區別,第二段代碼對$b賦值的時候使用了引用變量$b=&$a,也就是多了一個符號&,但是結果卻截然不同。
我們對$b賦值的時候,$b的值應該等於$a的值1,隨後我們對$a重新賦值爲2,但是沒有對$b進行賦值操作,那麼爲什麼$b的值會發生變化呢?
當我們定義變量的時候,php會在內存中開闢一塊空間來存儲變量,而由於php中COW機制(copy on write)的存在,$b=$a操作並不會給$b開闢空間,而是將指針指向$a的內存空間。在$a=2賦值操作中,由於COW,$a會重新複製出一塊內存空間,所以$a的改變並不會影響$b的值,因爲它們是兩個內存空間。而在使用了引用變量之後,$b會一直指向$a的內存空間,所以$b的值會和$a一起變化。
簡單的說就是,內存空間就是一個房子,$a的值就是房子裏的東西,而引用變量就是在$a指向的房子上再開闢一扇門,從此$b的值也是房子裏的東西,因爲兩個人指向的是同一個房子,所以“值”當然也是一樣的嘍。

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