我有一些带有一些整数的 PHP 代码并且一切正常,除非我有08
或0X
作为整数。当我把它们放在引号里时,一切都很好。
示例编号:
2 //Works fine
08 //Doesn't work
012 //Doesn't work
"08" //Works fine again
"012" //Works fine again
谁能告诉我背后的原因?
如果你只写 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 开始,会发出解析错误。