Странное поведение с числами, которые имеют ведущий ноль
У меня есть PHP-код с некоторыми целыми числами, и все работает нормально, кроме случаев, когда у меня есть 08
или же 0X
как целое число Все отлично работает, когда я помещаю их в цитату.
Пример номера:
2 //Works fine
08 //Doesn't work
012 //Doesn't work
"08" //Works fine again
"012" //Works fine again
Кто-нибудь может сказать мне причину этого?
1 ответ
Если вы просто пишете 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, возникает ошибка синтаксического анализа.