int переменная с начальным нулем?

Почему это приводит к следующим результатам в 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 и преобразовать его в десятичное значение, которое по умолчанию основано.

Пожалуйста, пройдите через это