PHP 引用傳遞

PHP 引用傳遞

一、引用是什麼
在 PHP 中引用意味着用不同的名字訪問同一個變量內容。這並不像 C 的指針:例如你不能對他們做指針運算,他們並不是實際的內存地址…… 查看引用不是什麼瞭解更多信息。 替代的是,引用是符號表別名。注意在PHP 中,變量名和變量內容是不一樣的, 因此同樣的內容可以有不同的名字。最接近的比喻是 Unix 的文件名和文件本身——變量名是目錄條目,而變量內容則是文件本身。引用可以被看作是 Unix 文件系統中的硬鏈接。

二、引用做什麼
PHP 的引用允許用兩個變量來指向同一個內容
舉例如下:

 function Reference(&$str){
        $str .= '我是引用';
        echo $str   //輸出  我是外界字符我是引用
 }
 $string = '我是外界字符';
 Referenc($string);
 var_dump($string);  //輸出 我是外界字符我是引用

string 改變了地址,與str地址的內容是一致的,兩個變量來指向同一個內容

$array = array(1,2,3);
foreach($array as &$value){
	$value *=2;
}	
var_dump($array); //輸出 array(3) { [0]=> int(2) [1]=> int(4) [2]=> &int(6) }

接下來
foreach($array as $value){
var_dump($value); //輸出 2,4,4
}

看到這裏大家應該就有個疑問,爲什麼會出現這種情況呢。
在第一次運行之後的數組中,最後一位元素前面有 & 引用伏。

這也就導致了在第二次循環的時候,value的變量還是在array的第三個元素,也就是6上面。
foreach 會把數組中對應的元素賦值給as後面的變量,這樣的話,在第二次foreach中,循環第一次的時候,把2賦值給了value,6就變成了2,循環完的第一個數組也就變成了[2,4,2],在第二次的循環中把4賦值給了value,2就變成了4,成爲了[2,4,4],第三次循環的時候,第三個數就是4,再去賦值還是4,然後還是2,4,4

在這裏插入圖片描述

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