1. 程式人生 > >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 變量引用-對象引用