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

2022-08-30 20:41:45

事实证明,找到这个问题的答案比我想象的要困难得多。由于我不知道你会怎么称呼它,所以很难运行Google搜索,因为它会忽略这些字符。

我尝试浏览PHP Assignment Operators页面,甚至其他运算符页面,没有发现任何确切告诉我他们做什么的东西。我不只是想根据我使用它的单一函数来猜测。那么'&='和'=&'运算符到底做了什么呢?

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

请不要说显而易见的事情;我需要有人来解释他们到底做了什么。我知道其中一个是“按位”的,但这对我来说没有任何意义。


答案 1

=& 按引用分配

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

来自 PHP 参考文献手册:

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


&=按位和赋值

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

来自维基百科上的Bitwise AND:

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

    0101
AND 0011
  = 0001

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


答案 2

=&通过引用进行分配

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

例:

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

$b = 'bar';

echo $a;

prints 因为具有对 的引用,因此更改也会更改 的值。bar$b$a$b$a


&=按位

例:

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

然后只是和的缩写:获取每个位并执行 AND 运算,即:$a &= $b$a = $a & $b

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 ;)

推荐