我有一些带有一些整数的PHP代码,并且一切正常,除非我拥有08或0X作为整数。当我引用它们时,一切都很好。
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/zh/language.types.integer.php
句法 整数可以十进制(以10为底),十六进制(以16为底),八进制(以8为底)或二进制(以2为底)表示法指定,还可以在其后加上一个符号(-或+)。 自PHP 5.4.0起可用二进制整数文字。 要使用 八进制表示法 ,请在数字前加上 0 (零)。要使用 十六进制表示法,请 在数字前加 0x 。要使用 二进制表示法,请 在数字前加 0b 。 […] 警告: 在PHP 7之前,如果在八进制整数(即8或9)中给出了无效数字,则其余数字将被忽略。从PHP 7开始,发出解析错误。
句法
整数可以十进制(以10为底),十六进制(以16为底),八进制(以8为底)或二进制(以2为底)表示法指定,还可以在其后加上一个符号(-或+)。
自PHP 5.4.0起可用二进制整数文字。
要使用 八进制表示法 ,请在数字前加上 0 (零)。要使用 十六进制表示法,请 在数字前加 0x 。要使用 二进制表示法,请 在数字前加 0b 。
[…]
警告: 在PHP 7之前,如果在八进制整数(即8或9)中给出了无效数字,则其余数字将被忽略。从PHP 7开始,发出解析错误。