当一个或多个数字常量按位值作为参数传递时,为什么 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
被解读为十进制的一百万。
我正在使用 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
被解读为十进制的一百万。