2018/03/20 變量引用-對象引用
阿新 • • 發佈:2018-03-20
www. 全局變量 UNC 兩個 null AR 完成後 OS 刪除
就目前的工作中的話,很少.
--
變量的引用
$a = ‘a‘; $b = ‘b‘; $c = &$a; echo $a; // 輸出 a echo $b; // 輸出 b echo $c; // 輸出 a $a = ‘c‘; echo $c; // 輸出 c
PHP 的引用允許你用兩個變量來指向同一個內容
$a 和 $c 共用的是同一份內存空間
--
函數的傳址調用 傳址調用我就不多說了 下面直接給出代碼
function test (&$a) { $a = $a + 100; } $b = 1; test($b); echo $b; // 輸出101
如果你想修改全局變量,光寫一個函數是不行的。
由於函數作用域,無法修改全局變量,所以使用 函數傳址調用 可以修改全局變量
--
對象引用
class a{ var $abc="ABC"; } $b=new a; $c=$b; echo $b->abc;//這裏輸出ABC echo $c->abc;//這裏輸出ABC $b->abc="DEF"; echo $c->abc;//這裏輸出DEF
以上代碼是在PHP5中的運行效果 在PHP5中 對象的復制是通過引用來實現的。
上列中$b=new a; $c=$b; 其實等效於$b=new a; $c=&$b; PHP5中默認就是通過引用來調用對象, 但有時你可能想建立一個對象的副本,並希望原來的對象的改變不影響到副本 . 為了這樣的目的,PHP定義了一個特殊的方法,稱為__clone.
--
引用的作用
如果在你的程序中,應用一個對象變量很多。並且希望使用完成後清除,個人建議用 "&" 方式,然後用$var=null的方式清除.
--
清除引用
$a = 1; $b =& $a; unset ($a);
echo $b; // 輸出 1
是不是有點奇怪,明明他的引用已經被銷毀了,怎麽$b還有值?
當你 unset 一個引用,只是斷開了變量名和變量內容之間的綁定。這並不意味著變量內容被銷毀了。
PHP 會在刪除變量的時候,會自動拷貝。
其實這樣子,就是為了避免把$a給刪掉,造成把$b也給刪掉的問題。
參考日誌:
https://www.cnblogs.com/thinksasa/p/3334492.html
https://www.cnblogs.com/wangtao_20/p/3411835.html
2018/03/20 變量引用-對象引用