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

Why the phpinfo() function gives wrong result when one or more of the numerical constants bitwise values are passed as arguments?

我正在使用 PHP 7.2.8

我执行了以下代码:

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

上面的代码工作正常,给我预期的结果。

然后我尝试将数字常量按位值作为参数传递,即数字 2 和 8 的二进制等价物作为参数。请看下面的代码:

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

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

为什么会这样?

传递给phpinfo()函数的参数说明和传递的各个数值常量的含义请参考This Link

请让我知道我在哪里犯了错误?我只是想按照手册文本中的描述执行代码。

谢谢。

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

如果没有该前缀,这些数字将以您不希望的方式进行解释。 00000010 被解释为 8 的八进制表示,而 1000000 被解读为十进制的一百万。