4

I know that =& usually means "assign by reference", but what happens if we reverse these two characters, since I've seen this in plenty of PHP scripts?

4

3 回答 3

6

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

于 2013-04-18T09:03:55.347 回答
5

它是复合位与/赋值运算符:

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

$y &= $x; // bitwise AND $y and $x, assign result back to $y
var_dump($y == 0x01); // true
于 2013-04-18T09:01:35.170 回答
4

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

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

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

另一方面 ,由于运营商是分开的,因此=&应该真正扩展到。= &这称为引用分配。the=是您的标准赋值运算符,并且在&变量名之前添加前缀的 when 将返回reference给变量。

$y = "foobar";
$x = &$y; // $x now holds a reference to $y.
于 2013-04-18T09:06:23.263 回答