无法理解此代码中的“&”.我是PHP的初学者.请让我知道任何人都可以解决它


Unable to understand "&" in this code. I am very beginner to php. Kindly let me know could any one solve it?

无法理解此代码中的&。我是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将采用两个操作数,并且当且仅当其所有操作数都truetrue

因此,例如:

operand 1    operand 2    result
true         true         true
false        true         false
true         false        false
false        false        false

请注意,true = 1false = 0

因此,要解释一下在您的显式情况下(1和5(它将做什么:

  • 获取1(0001(和5(0101(的二进制表示形式。
  • 执行逻辑AND(从右到左(:
    • 1 & 1 = 1 ( true (
    • 1 & 0 = 0 ( false (
    • 0 & 1 = 0 ( false (
    • 0 & 0 = 0 ( false (

所以结果是 0001(1 的二进制表示(。