Man*_*nal 3 php integer numbers octal
我有一些整数的PHP代码,一切正常,除非我有08或0X作为整数.当我把它们引用时,一切正常.
示例数字:
2 //Works fine
08 //Doesn't work
012 //Doesn't work
"08" //Works fine again
"012" //Works fine again
Run Code Online (Sandbox Code Playgroud)
有人能告诉我背后的原因吗?
Mar*_*ker 12
如果您只是编写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开始,会发出解析错误.