回答
它不被弃用,不太可能。例如,这是一种标准方式,可以将一个数组的一部分或对象镜像更改为另一个,而不是复制现有数据。
它被称为转让指定,其中,引用手册,"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。该页面是参考文献系列的一部分 - 值得花一点时间阅读整个系列。
这是两个不同的操作符。 =
是你可能知道的任务。而&
表示变量应该通过引用而不是按值来访问。
我很抱歉,但这太简单了。 $ 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
@唐:感谢您的阐述。我可以告诉你是C程序员。 – Asaph 2010-04-07 03:26:58
我第二个是Don说的。但我不会说这太简单了。我会说这是错误的。 – Artefacto 2010-08-21 17:11:20
$x = &$y['z'];
也有创造$y['z']
如果它不存在,并将其设置为null
的效果。
这可以防止您可能想要读取的错误消息。我还没有找到这方面的文件;对于我所知道的,在5.3中可能是新的。
- 1. PHP赋值运算符=&
- 2. 移动赋值运算符VS拷贝赋值运算符
- 3. BigDecimal的赋值运算符
- 4. 赋值运算符 - 自赋值
- 5. 重载赋值运算符
- 6. 赋值运算符在
- 7. 嫩枝赋值运算符
- 8. 重载赋值运算符
- 9. 赋值=运算符超载
- 10. 赋值运算符继承
- 11. 默认赋值运算符
- 12. 使用赋值运算符的的unique_ptr
- 13. C++中的赋值运算符
- 14. 赋值运算符Python中的变量?
- 15. if语句中的赋值运算符
- 16. OOP,赋值运算符不起作用
- 17. 逗号运算符和赋值运算符 - 返回值
- 18. 并行赋值运算符在Ruby中
- 19. C++ 11字符串赋值运算符
- 20. 与赋值运算符一起使用的逻辑非(!)运算符是否总是将赋值运算符左侧的变量赋值为false?
- 21. 类赋值运算符=的问题
- 22. 对象的赋值运算符
- 23. 的举动赋值运算符
- 24. 赋值运算符的对象
- 25. Python的赋值运算符关联
- 26. 理解的CComBSTR赋值运算符
- 27. 提升赋值运算符的左侧
- 28. 使用值而不是引用的赋值运算符的分支
- 29. 等于运算符“==”表现得像赋值运算符“=”
- 30. GCC矢量扩展赋值运算符
参见http://stackoverflow.com/questions/3200009(标记为此副本) – Artefacto 2010-07-08 10:19:36