4

我有一些带有一些整数的 PHP 代码并且一切正常,除非我有080X作为整数。当我把它们放在引号里时,一切都很好。

示例编号:

2      //Works fine
08     //Doesn't work
012    //Doesn't work
"08"   //Works fine again
"012"  //Works fine again

谁能告诉我背后的原因?

4

1 回答 1

13

如果你只写 08 和 09(不带引号)或任何其他以 0 开头的数字,PHP 认为你正在写一个八进制值,而 08 和 09 是无效的八进制数。

http://www.php.net/manual/en/language.types.integer.php

句法

整数可以用十进制(以 10 为基数)、十六进制(以 16 为基数)、八进制(以 8 为基数)或二进制(以 2 为基数)表示法指定,可以在前面加上符号(- 或 +)。

二进制整数文字从 PHP 5.4.0 开始可用。

要使用八进制表示法,请在数字前加上0(零)。要使用 十六进制表示法,请在数字前加上0x。要使用二进制表示法,请在数字前加上0b

[...]

警告: 在 PHP 7 之前,如果在八进制整数(即 8 或 9)中给出了无效数字,则该数字的其余部分将被忽略。从 PHP 7 开始,会发出解析错误。

于 2013-02-20T13:33:58.257 回答