无法理解此代码中的&
。我是PHP的初学者。请让我知道任何人都可以解决它吗?
$a = 1;
$b = &$a;
$a =5&$b;
echo $a;
exit();
在此上下文中,&
是按位and
(按位运算符(。
$a = 1; // the var a is now 1
$b = &$a; // the var b is now the var a (not the int 1)
$a =5&$b; // 5 & $b ( 1 = 0001) = ( 1 = 0001) & ( 5 = 0101)
echo $a; // prints 1
exit();
这将要做的是获取数字的位值(1 = 0001 和 5 = 0101(并应用 and 运算。
在此上下文中了解其他值的一些示例:
( 1 = 0001) = ( 1 = 0001) & ( 1 = 0001)
( 0 = 0000) = ( 1 = 0001) & ( 2 = 0010)
( 1 = 0001) = ( 1 = 0001) & ( 3 = 0011)
( 0 = 0000) = ( 1 = 0001) & ( 4 = 0100)
( 1 = 0001) = ( 1 = 0001) & ( 5 = 0101)
更新:正如OP所问的,我将尝试进一步解释:
按位AND
运算符将采用两个等长的二进制表示并执行逻辑AND
。
逻辑AND
将采用两个操作数,并且当且仅当其所有操作数都true
时true
。
因此,例如:
operand 1 operand 2 result
true true true
false true false
true false false
false false false
请注意,true = 1
和false = 0
。
因此,要解释一下在您的显式情况下(1和5(它将做什么:
- 获取
1
(0001
(和5
(0101
(的二进制表示形式。 - 执行逻辑
AND
(从右到左(:- 1 & 1 = 1 (
true
( - 1 & 0 = 0 (
false
( - 0 & 1 = 0 (
false
( - 0 & 0 = 0 (
false
(
- 1 & 1 = 1 (
所以结果是 0001
(1
的二进制表示(。