PHP赋值运算符=& [重复]

Posted

技术标签:

【中文标题】PHP赋值运算符=& [重复]【英文标题】:PHP assignment operator =& [duplicate] 【发布时间】:2011-03-13 02:47:34 【问题描述】:

可能重复:Reference assignment operator in php =&

=& 赋值运算符在 PHP 中是什么意思?我在分配部分的 PHP 手册中找不到任何参考。

我在类实例化中看到过,所以我很不明白 =& 和单独的 = 之间有什么区别。

【问题讨论】:

【参考方案1】:

这是一个 reference assignment(deadlink),实际上是两个不同的运算符。

= 是赋值,& 通过引用访问右侧的值。

【讨论】:

【参考方案2】:

这称为参考分配。它使被赋值变量指向与被赋值变量相同的值。

在 PHP 4 中,这在分配对象和数组时相当普遍,否则您将获得对象或数组的副本。这不利于内存管理以及某些类型的编程。

在 PHP 5 中,对象和数组是引用计数的,而不是复制的,因此很少需要引用赋值。一些程序员仍然使用它“以防万一” PHP 出于某种原因决定复制在那里有意义。但是引用赋值在其他方面仍然有效,例如标量变量,通常在赋值时复制。

【讨论】:

【参考方案3】:

意思是reference assignment。

==& 之间有两个区别。

首先,= 不创建引用集:

$a = 1;
$b = $a;
$a = 5; //$b is still 1

另一方面,=& 运算符确实创建了引用集:

$a = 1;
$b = &$a;
$a = 5; //$b is also 5

其次,= 改变了引用集中所有变量的值,而&= 破坏了引用集。将之前的示例与此进行比较:

$a = 1;
$b = &$a;
$c = 5;
$a = &$c; //$a is 5, $b is 1

【讨论】:

在第三个例子中看不到 &= 的使用。我错过了什么吗?

以上是关于PHP赋值运算符=& [重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥移动赋值运算符应该返回对 *this 的引用 [重复]

派生类上的C ++赋值运算符实现[重复]

引用运算符的PHP赋值不通过函数工作

php语法基础3

PHP中的赋值运算符

PHP 的运算符包括算术运算符赋值运算符比较运算符和逻辑运算符。