echo(073032097109032116104101032118101114121032109111100101108032111102032097032109111100101114110032109097106111114032103101110101114097108046);
По сути, очень много. Теперь, почему он выводит 241872
? Я знаю, что PHP имеет обработчики float. Когда я удаляю начальный ноль, он работает так, как ожидалось. Что это за главный знак?
Если вы используете начальный ноль, число интерпретируется PHP как восьмеричное число . Таким образом, 9
не является действительной частью числа, и синтаксический анализатор останавливается там:
0730320 (base 8) = 7 * 8^5 + 3 * 8^4 + 3 * 8^2 + 2 * 8^1 = 7 * 32768 + 3 * 4096 + 3 * 64 + 2 * 8 (base 10) = 241872 (base 10)
Начальный ноль указывает восьмеричное целочисленное значение
Руководство :
Предупреждение
Если недопустимая цифра указана в восьмеричном целом (т.е. 8 или 9), остальная часть номера игнорируется.
Пример № 2 Октальная странность
<?php var_dump(01090); // 010 octal = 8 decimal ?>
Таким образом, ваш номер отключается после 0730320, что равно 241872 в десятичной системе.
010 дает вам 8 (восьмеричное число)
0x10 дает вам 16 (шестнадцатеричное число)