本篇文章給大家帶來的內容是關於php變數的引用有哪些方法?php變數的引用機制的方法總結,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所協助。
1.變數的引用,php中的“&”:
$a = "hello world";//定義一個變數,下面賦值給$b$b = $a; //這一步實際上原理是會將變數$a複製拷貝一份,也就是記憶體中重新申請一個地址儲存變數$b
註:在php中,使用 "=" 直接賦值,其實就是拷貝一份右邊的變數給$b,會產生一份記憶體空間,結果可能是同樣的內容在記憶體中兩份。
2、使用符號“&”進行引用
$a = "hello world";$b = &$a;
註:使用引用,php引擎不會拷貝一份變數,其實就是將指標指向了$a在記憶體中的地址,$b中就是儲存了這個指標。
所以使用引用的時候,把$b的值改變,$a也會跟著改變。
$a = "hello world";$b = &$a;$b = "test new value"; //把b的值改掉,a的值也會跟著改變echo $a; //輸出test new value,因為改變了b的值也會改變a的值。
經常在定義函數的時候看到像這樣的情況:
function test (&$param){ $param++;}$k = 8;test($k);echo $k; //結果$k的值被函數裡面改變了,輸出9。
註:$param前面帶有引用,所以傳入進來的參數並不會在記憶體中拷貝一份,而是直接對原來的記憶體空間進行引用。所以:如果裡對使用符號&傳入進來的變數值進行修改了,那麼也會改變原來的記憶體空間中的值。
3、銷毀變數的時候。並不會改變原來的值。
$a = 'd';$b = &$a;$b = 8; var_dump($b,$a); //因為是引用了,所以把b的值改掉,a的值也跟著改為8了。unset($b); //調用unset刪除b變數,a變數不會刪除var_dump($b,$a); //輸出null和8
註:調用unset刪除$b變數的時候,php引擎從變數符號表中發現:我要刪除的變數$b原來是引用了變數$a,這不好刪除啊,因為一刪除導致$a變數也沒了,所以就先把$a變數拷貝一份後在刪除$b變數。