'&='和'=&'运算符有什么作用?

ani*_*son 20 php variables operators

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

我尝试浏览PHP Assignment Operators页面,甚至其他操作页面,并没有发现任何告诉我他们究竟做了什么.我不仅仅想根据我使用它的单一功能进行猜测.那么'&='和'=&'运算符到底是做什么的呢?

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

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

Gor*_*don 36

=& 通过引用分配

$a = 1;
$b =& $a;
$a++;
echo $b; // 2
Run Code Online (Sandbox Code Playgroud)

来自PHP参考手册:

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


&=是一个按位AND赋值

$a = 1;
$a &= 1; // is the same as
$a = $a & 1;
echo $a; // 1
Run Code Online (Sandbox Code Playgroud)

来自维基百科的Bitwise AND:

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

    0101
AND 0011
  = 0001
Run Code Online (Sandbox Code Playgroud)

编辑:有关按位运算的实际示例,请参阅我对PHP中的按位运算的回答

  • 我更喜欢使用`$ a =&$ b`.它更加清晰,因为`&`不属于等号,而实际上属于变量.它类似于`a - > 0`"转到"运算符,实际上它是'a--> 0`.http://stackoverflow.com/q/1642028/985454 (2认同)

Fel*_*ing 10

=&通过参考分配.

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

例:

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

$b = 'bar';

echo $a;
Run Code Online (Sandbox Code Playgroud)

print bar因为$b有引用$a而因此更改$b也会更改值$a.


&=有点的AND.

例:

$a = 4 // binary representation: 100
$b = 1 // binary representation: 001
Run Code Online (Sandbox Code Playgroud)

然后$a &= $b只是简称$a = $a & $b并意味着:抓住每一点并执行AND操作,即:

0 & 1 = 0
1 & 0 = 0
1 & 1 = 1
0 & 0 = 0
Run Code Online (Sandbox Code Playgroud)

因此

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

=> $a = 0 // bit representation 0 ;)
Run Code Online (Sandbox Code Playgroud)