在 PHP 中,&=
和 |=
是复合赋值运算符(也称为“位赋值运算符”),它们分别用于位与(AND)和位或(OR)操作,并将结果赋值回原变量。
&=
(位与赋值运算符)
&=
运算符将左侧变量与右侧值进行位与操作,并将结果赋值回左侧变量。
例如:
$a = 5; // 二进制: 0101
$b = 3; // 二进制: 0011
$a &= $b; // $a 现在为 1 (二进制: 0001),因为 0101 & 0011 = 0001
echo $a; // 输出 1
|=
(位或赋值运算符)
|=
运算符将左侧变量与右侧值进行位或操作,并将结果赋值回左侧变量。
例如:
$a = 5; // 二进制: 0101
$b = 3; // 二进制: 0011
$a |= $b; // $a 现在为 7 (二进制: 0111),因为 0101 | 0011 = 0111
echo $a; // 输出 7
注意事项
这些运算符也适用于布尔值,但在这种情况下,它们通常会被转换为整数(true
为 1,false
为 0)然后执行位运算。
除了 &=
和 |=
这样的复合位运算符之外,还有其他一些基本的位运算符,它们包括:
&
(按位与):只有两个相应的二进制位都为 1 时,结果位才为 1。|
(按位或):只要两个相应的二进制位中有一个为 1 时,结果位就为 1。^
(按位异或):当两个相应的二进制位相异时,结果位为 1。~
(按位取反):对数的每一个二进制位取反(0 变为 1,1 变为 0)。<<
(按位左移):将数的所有二进制位向左移动指定的位数,右侧用 0 填充。>>
(按位右移):将数的所有二进制位向右移动指定的位数,左侧的处理与数值的符号有关(正数用 0 填充,负数则取决于系统)。