为什么intval(042)返回结果34?这个怎么运作?

Den*_*nis -1 php

我试着理解intval()是如何工作的,其中一个例子是intval(042)= 34.我知道默认基数是10,所以为什么它返回34而不是42.在这个例子中零点扮演什么角色?

echo intval(042); //34
echo intval(42); //42
Run Code Online (Sandbox Code Playgroud)

Joh*_* V. 7

前导0告诉php将其解释为八进制/基数8.

042八进制是34十进制的.

您可以在此处找到PHP中其他整数格式的列表.


Nie*_*sol 5

带前缀的数字0被认为是八进制数字(以8为底)。0428 = 3410

实际上,这与无关intval。如果你只是写echo 042;你就会得到34

同样,您也可以用十六进制写数字。echo 0xff;255

而且,随着PHP 5.4的,你甚至可以写在二进制数:echo 0b1001;9