具有前导零的数字的奇怪行为

我有一些整数的PHP代码,一切工作正常,除了当我有080X整数。 这一切都正常工作,当我把他们在报价。

示例编号:

 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错误。