Странное поведение с числами, имеющими начальный нуль

У меня есть код 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 возникает ошибка синтаксического анализа.