Почему это приводит к следующим результатам в 34? Кажется, он не имеет ничего общего с восьмеричными цифрами.
intval(042);
но ведущее 0 указывает на восьмеричность во многих языках, как это имеет место здесь.
Он имеет отношение к восьмеричным числам, 042
интерпретируется как восьмеричное число 42
которое равно 4 * 8 + 2 = 34
.
Имейте в виду, что восьмеричная интерпретация происходит, когда литерал числа анализируется при загрузке PHP-скрипта. Он не имеет ничего общего с intval()
, который здесь ничего не делает, потому что значение уже целое.
Октальная интерпретация происходит только с числовыми литералами, а не при приведении строки в целое число:
intval(042) // == 34 intval('042') // == 42 (int)'042' // == 42
В PHP число с ведущим 0 считается восьмеричным числом.
Поэтому 042 читается как восьмеричное число.
Функция intval () преобразует ее в десятичное число, которое равно 34.
Таким образом, выход браузера составляет 34.
Это просто определение функции. Начальный ноль – это команда, которая анализирует его как восьмеричное число, аналогично тому, как 0x в качестве префикса означает hex. Дополнительную информацию см. В документации .
Будьте внимательны при передаче этой функции строковое значение с ведущим «0». Если вы дадите ему «042», то он будет рассматривать его как BASE 8-9 и преобразовать его в десятичное значение, которое по умолчанию основано.
Пожалуйста, пройдите через это