說明:數組
看圖函數
下面是幾個例子學習
(1)普通傳值引用指針
$param1=1;
$param2=2;
$param2 = &$param1; //把變量1的內存地址賦給變量2;此時的變量2和變量1全等;
echo $param2;// 1
$param1 = 5; //變量1和變量2是一處內存(也就是他們的引用地址是同樣的),改變其中一個,另一個也被改變;
echo $param2; //顯示爲5code
(2) 函數傳值引用對象
$param1 = 1;
$param2 = ''; //定義變量1
function add(&$param2) //傳參數
{
$param2=3; //把3賦值給變量2
//return $param2; //返回變量2
}
echo $param1; //1
$param3=add($param1); //調用方法add,並將變量1的引用傳給變量2 內存
echo $param3;//3
echo $param1;//3io
echo $param2;// ''function
給數組裏面的鍵值各增長10; $arr = array(3,5); foreach($arr as $k=>$v){ $v+=10;//1.更改無效,至關於遍歷出的鍵值扔給變量$v,而後更改變量$v的值,跟數組無關; echo $v." ";//輸出13 15; } foreach($arr as $k=>$v){ $arr[$k]+=10;//2.更改有效,直接更改鍵名裏面的值; echo $v;//輸出3,5; } foreach($arr as &$v){ $v+=10;//3.更改有效,遍歷的鍵值直接給了$v的地址,這個地址其實就是鍵名..$v+10就等於$arr[$k]+10; }
1 unset並無真正銷燬變量的做用...僅僅是切斷了變量與內存之間的關係,內存只要還被引用着就不會被釋放; $b和$a同時指向1,切斷其中$a的關係,$b仍是指向1,因此上題不報錯,照樣輸出1。$a = 1; $b = &$a; unset($a); echo $b; //