【问题标题】:What is the difference between "&=" and "=&" when assigning a variable value in PHP?在PHP中分配变量值时,“&=”和“=&”有什么区别?
【发布时间】:2025-12-18 23:25:01
【问题描述】:

我知道=& 通常表示“通过引用分配”,但是如果我们颠倒这两个字符会发生什么,因为我在很多 PHP 脚本中都看到过这种情况?

【问题讨论】:

  • &= ... Logical bitwise AND, =& ... 'assign' by Reference
  • 看看这个网站link
  • 人们为什么认为this question shows research effort;it is useful and clear
  • @Amir 没有必要进行研究,只要它具有您提到的其他两个品质。作为开发人员,我自己发现这个问题的答案非常有用。至于清晰度,我相信它是用尽可能清晰和简单的方法编写的。

标签: php pass-by-reference


【解决方案1】:

$a &= $b$a = $a & $b 的缩写,是位与运算符。

【讨论】:

    【解决方案2】:

    这是复合bitwise AND/赋值运算符:

    $x = 0x01;
    $y = 0x11;
    
    $y &= $x; // bitwise AND $y and $x, assign result back to $y
    var_dump($y == 0x01); // true
    

    【讨论】:

      【解决方案3】:

      &= 是一个compound assignment operator,而=& 实际上是两个独立的运算符(=&),推到一起。这是合法的语法,因为 PHP 不要求它们之间有空格。

      &= 在左侧和右侧之间执行按位与运算,然后将结果分配给左侧变量。

      $x = 1;
      $x &= 0; // $x === 0 now. A more verbose syntax would be "$x = $x & 0;"
      

      另一方面 =& 应该真正扩展为 = &,因为运算符是分开的。这被称为assignment by reference= 是您的标准赋值运算符,& 在变量名之前添加前缀会将reference 返回给变量。

      $y = "foobar";
      $x = &$y; // $x now holds a reference to $y.
      

      【讨论】: