'& ='和'=&'是什么经营者呢?

时间:2010-07-05 05:19:23

标签: php variables operators

找到答案的结果比我想象的要困难得多。由于我不知道你称之为什么,所以很难运行Google搜索,因为它会忽略这些字符。

我尝试浏览PHP Assignment Operators页面,甚至是其他操作页面,但没有发现任何确切告诉我他们做什么的内容。我不仅仅想根据我使用它的单一功能进行猜测。那么'& ='和'=&'究竟是什么呢?运营商呢?

我所知道的是它设置了一个变量,它将是'='部分,所以我真的需要知道'&'是什么部分正在做。

请不要说明显;我需要有人来解释他们的确切行为。我知道其中一个是“按位”,但这对我没有任何意义。

4 个答案:

答案 0 :(得分:36)

=& assigns by reference

$a = 1;
$b =& $a;
$a++;
echo $b; // 2

参考PHP手册:

  

PHP中的引用是一种以不同的名称访问相同变量内容的方法。


&=bitwise AND作业

$a = 1;
$a &= 1; // is the same as
$a = $a & 1;
echo $a; // 1

来自Wikipedia on Bitwise AND:

  

按位AND采用两个相等长度的二进制表示,并对每对相应位执行逻辑AND运算。在每对中,如果第一位为1而第二位为1,则结果为1.否则,结果为0.例如:

    0101
AND 0011
  = 0001

编辑:有关按位操作的实际示例,请参阅我对Bitwise Operations in PHP的回答

答案 1 :(得分:10)

=&assigning by reference

它不是按值而是通过引用来分配变量。

示例:

$a = 'foo';
$b =& $a;

$b = 'bar';

echo $a;

打印bar,因为$b引用了$a,因此更改$b也会更改$a的值。


&=bitwise AND

示例:

$a = 4 // binary representation: 100
$b = 1 // binary representation: 001

然后$a &= $b只是$a = $a & $b的缩写,意思是:抓住每一位并执行AND operation,即:

0 & 1 = 0
1 & 0 = 0
1 & 1 = 1
0 & 0 = 0

因此

     1 0 0 
AND  0 0 1
     -----
     0 0 0

=> $a = 0 // bit representation 0 ;)

答案 2 :(得分:2)

&=

是按位“AND”赋值运算符。它对变量执行“AND”并存储结果。 (更多信息位于 Bitwise Operators ,更多一般信息位于 Bitwise Operations in C )。

=&

运算符是一个引用赋值,它使变量不是指另一个变量或常量的值,而是指该内存位置(更多信息在 What References Are 中)

答案 3 :(得分:1)

'& ='和'=&'是非常不同的运营商。

'& ='是按位赋值运算符:

$var = false;
$var &= foo(); // will call foo()
$var = false & foo(); // will call foo()
$var = $var && foo(); // will not call foo()

=&安培;'返回一个引用:

$a = $b; //$a points to $b
$a =& $b; //$a does NOT point to $b... both point to the same thing.