代码之家  ›  专栏  ›  技术社区  ›  PHPFan

当一个或多个数值常量的位值作为参数传递时,为什么phpinfo()函数给出了错误的结果?

  •  0
  • PHPFan  · 技术社区  · 6 年前

    我在用 PHP7.2.8

    我执行以下代码:

    <?php
      phpinfo(2 | 8); //Bitwise OR operator is used
    ?>
    

    上面的代码运行良好,给出了预期的结果。

    然后我尝试将数值常量的位值作为参数传递,也就是将数字2和8的二进制等价物作为参数传递。请参见以下代码:

    <?php
      phpinfo(00000010 | 1000000); //Bitwise OR operator is used
    ?>
    

    我意外地得到了上述代码的输出(即,第二个代码传递数值常量的位值)。

    为什么呢?

    请参阅 This Link 有关要传递给 phpinfo() 函数以及要传递的每个数值常量的含义。

    请告诉我哪里出错了?我只是想执行手册中描述的代码。

    谢谢您。

    1 回复  |  直到 6 年前
        1
  •  4
  •   gone    6 年前

    要在PHP中用二进制表示数字,必须使用前缀 0b (例如, 0b00000010 )

    如果没有这个前缀,这些数字将以您不希望的方式进行解释。 00000010 被解释为8的八进制表示,并且 1000000 正在被读取为100万,十进制。