“& =”和“=&”之间的区别是什么?在PHP中分配变量值时?

时间:2013-04-18 08:59:10

标签: php pass-by-reference

我知道=&通常意味着“通过引用分配”,但如果我们反转这两个字符会发生什么,因为我在很多PHP脚本中都看到了这一点?

3 个答案:

答案 0 :(得分:6)

$a &= $b$a = $a & $b的缩写,它是按位和运算符。

答案 1 :(得分:5)

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

$x = 0x01;
$y = 0x11;

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

答案 2 :(得分:4)

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

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

$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.