PHP中的引用赋值运算符,=&
在PHP中, =&
(等号和赋值)赋值操作符是做什么的?
它是否被弃用?
它不被弃用,不太可能。 这是标准的方法,例如,使一个数组的一部分或对象镜像对另一个进行更改,而不是复制现有的数据。
这就是所谓的按引用分配,引用手册, “这意味着两个variables最终指向相同的数据,并没有任何地方复制” 。
在PHP 5中 ,唯一被“ =&
”弃用的是“通过引用分配new
的结果”,这可能是任何混淆的根源。 new
是通过引用自动分配的,所以&
在$o = &new C;
是冗余/不赞成的$o = &new C;
,但不在$o = &$c;
。
由于很难search,所以注意=&
( 等号符号 )和= &
( 等于空间& 符号 )是相同的,并且通常被写成使得它运行到另一个variables中,例如$x = &$y['z'];
或$x = &$someVar
( &符美元符号variables名称 )。 从文档简化示例:
$a = 3; $b = &$a; $a = 4; print "$b"; // prints 4
这里有一个方便的链接, 详细介绍了PHP手册中的“ 按引用分配”部分 。 该页面是参考文献系列的一部分 – 值得花一点时间阅读整个系列。
这是两个不同的运营商。 =
是你可能知道的任务。 &
表示variables应该通过引用而不是按值来访问。
$x = &$y['z'];
如果它不存在,也会创build$y['z']
,并将其设置为null
。
这可以防止您可能想读取的错误消息。 我还没有find这方面的文件, 对于我所知道的,在5.3中可能是新的。
引用@Don的评论,因为这是对这个问题很好解释的答案。
我很抱歉,但这太简单了。 $ a =&$ b表示使variables$ a引用与$ b现在相同的东西。 在此之后,$ a = 5; 也会导致$ b有5。
然而,引用链接可能被$ b =&$ xyz打破; 或未设定($ b); 那时$ a将是唯一知道单元格是在哪里持有5的variables。
还要注意,如果你设置$ a using =&,你必须使用=&next time(或unset($ a))来更改$ a的引用链接,特别是$ a = NULL; 不会中断链接,只用nullreplace5;