PHP赋值运算符=&

时间:2010-07-08 01:02:31

标签: php

  

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

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

我在类实例化中看到它,所以我完全不明白 =& = 之间有什么区别。

3 个答案:

答案 0 :(得分:7)

这意味着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

答案 1 :(得分:2)

它被称为参考分配。它使assign-to变量指向与assign-from变量相同的值。

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

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

答案 2 :(得分:0)

这是一个reference assignment,实际上是两个不同的运营商。

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