Как Leading Zero работает в php?

Предположим, у меня есть код, который выводит $i как

$i = 016;
echo $i / 2;
//ans will be 7

Я знаю, что ведущий ноль указывает на восьмеричное число в PHP, но как его интерпретировать, как его можно выполнить? Может кто-нибудь поделиться пошаговым исполнением? Какова роль парсера здесь? Я много исследовал и прочитал все предыдущие ответы, но ни у одного нет глубокого объяснения.

5

Решение

Когда вы предшествуете целые числа с нулем в PHP, в этом случае, 029,

Это становится восьмеричным.

Поэтому, когда вы повторяете это, он преобразуется в десятичную форму.

Что приводит к:

echo 016; //14 (decimal) valid octal

echo 029; // 2 (decimal) -  Invalid octal

На самом деле, здесь указано в руководство

Действительный восьмеричный:

octal       : 0[0-7]+

Замечания: До PHP 7, если неверное число было задано в восьмеричном целом числе (то есть 8 или 9), оставшаяся часть была проигнорирована. Начиная с PHP 7, возникает ошибка синтаксического анализа.

2

Другие решения

восьмеричный система счисления, или сокращенно октябрь, является системой счисления base-8 и использует цифры от 0 до 7.

Восьмеричные числа могут быть сделаны из двоичных чисел, группируя последовательные двоичные цифры на группы три (начиная справа).

Например, двоичное представление для десятичного числа 74 равно 1001010. Слева можно добавить два нуля: (00) 1 001 010, соответствующие восьмеричным цифрам 1 1 2, что дает восьмеричное представление 112.

В вашем вопросе $i = 016; рассчитывается переводчиком и выдает $i = 14;(которое является эквивалентным десятичным числом)

Затем вы просто делите его на 2, что дает 7.

2

По вопросам рекламы [email protected]