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