2009-11-20 123 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中可能是新的。