具有前导零的数字的奇怪行为
我有一些整数的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
句法
整数可以用十进制(十进制)(十进制),hex(hex),八进制(八进制)或二进制(二进制)表示法指定,前面可以加一个符号( – 或+)。
二进制整数文字自PHP 5.4.0起可用。
要使用八进制表示法 ,请在数字前面加上0 (零)。 使用hex符号前面的数字与0x 。 使用二进制表示法在数字前面加上0b 。
[…]
警告:在PHP 7之前,如果在八进制整数(即8或9)中给出无效数字,则其余的数字将被忽略。 从PHP 7开始,会发出parsing错误。