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

PHP*_*Fan 0 php constants function phpinfo bitwise-or

我正在使用PHP 7.2.8

我执行以下代码:

<?php
  phpinfo(2 | 8); //Bitwise OR operator is used
?>
Run Code Online (Sandbox Code Playgroud)

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

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

<?php
  phpinfo(00000010 | 1000000); //Bitwise OR operator is used
?>
Run Code Online (Sandbox Code Playgroud)

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

为什么这样?

请参阅此链接,以获取有关要传递给phpinfo()函数的参数的描述以及要传递的每个数字常量的含义的信息。

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

谢谢。

dus*_*uff 5

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

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