2009-11-20 40 views

回答

73

它不被棄用,不太可能。例如,這是一種標準方式,可以將一個數組的一部分或對象鏡像更改爲另一個,而不是複製現有數據。

它被稱爲轉讓指定,其中,引用手冊,"means that both variables end up pointing at the same data, and nothing is copied anywhere"

PHP 5棄用與=&被「按引用分配的new結果」的唯一的事,這可能是任何混淆的來源。 new通過引用自動分配,因此&$o = &new C;中是冗餘/不推薦使用,但不在$o = &$c;中。


由於很難尋找,注意=&等於符號)是一樣的= &等於空間符號),並經常寫過這樣,它運行到像$x = &$y['z'];$x = &$someVar其他變量(&符號美元符號變量名稱)。例如,從文檔簡化:

$a = 3; 
$b = &$a; 
$a = 4; 
print "$b"; // prints 4 

這裏有一個方便的鏈接到detailed section on Assign By Reference in the PHP manual。該頁面是參考文獻系列的一部分 - 值得花一點時間閱讀整個系列。

+11

閱讀整個系列需要多一分鐘的時間 – Pacerier 2013-07-05 17:24:09

+3

備註:*「因爲很難搜索」*:http://symbolhound.com是你這樣的東西的朋友。 – billynoah 2016-12-13 21:24:10

21

這是兩個不同的操作符。 =是你可能知道的任務。而&表示變量應該通過引用而不是按值來訪問。

+51

我很抱歉,但這太簡單了。 $ a =&$ b表示使變量$ a引用與$ b現在所做的相同的事情。在此之後,$ a = 5;也將導致$ b的值爲5.然而,參考鏈接可能被$ b = & $xyz;或未設置($ b)打破;在這個時候,$ a將是唯一知道單元格是哪個變量的變量。還要注意,如果您使用=&設置$ a,則必須使用=&next time(或unset($ a))來更改$ a的引用鏈接,特別是$ a = NULL;不會中斷鏈接,它只會將null替換爲5; – Don 2010-04-07 01:51:21

+7

@唐:感謝您的闡述。我可以告訴你是C程序員。 – Asaph 2010-04-07 03:26:58

+6

我第二個是Don說的。但我不會說這太簡單了。我會說這是錯誤的。 – Artefacto 2010-08-21 17:11:20

5
$x = &$y['z']; 

也有創造$y['z']如果它不存在,並將其設置爲null的效果。

這可以防止您可能想要讀取的錯誤消息。我還沒有找到這方面的文件;對於我所知道的,在5.3中可能是新的。