找到答案的结果比我想象的要困难得多。由于我不知道你称之为什么,所以很难运行Google搜索,因为它会忽略这些字符。
我尝试浏览PHP Assignment Operators页面,甚至是其他操作页面,但没有发现任何确切告诉我他们做什么的内容。我不仅仅想根据我使用它的单一功能进行猜测。那么'& ='和'=&'究竟是什么呢?运营商呢?
我所知道的是它设置了一个变量,它将是'='部分,所以我真的需要知道'&'是什么部分正在做。
请不要说明显;我需要有人来解释他们的确切行为。我知道其中一个是“按位”,但这对我没有任何意义。
答案 0 :(得分:36)
$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
按位AND采用两个相等长度的二进制表示,并对每对相应位执行逻辑AND运算。在每对中,如果第一位为1而第二位为1,则结果为1.否则,结果为0.例如:
0101
AND 0011
= 0001
编辑:有关按位操作的实际示例,请参阅我对Bitwise Operations in PHP的回答
答案 1 :(得分:10)
它不是按值而是通过引用来分配变量。
示例:
$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.