Php 为什么intval(042)返回结果34?它是如何工作的?

Php 为什么intval(042)返回结果34?它是如何工作的?,php,Php,我试图理解intval的工作原理,其中一个例子是intval042=34。我知道默认基数是10,所以为什么它返回34而不是42。零在这个例子中扮演什么角色 echo intval(042); //34 echo intval(42); //42 前导的0告诉php将其解释为 八进制的042是十进制的34 您可以在PHP中找到其他整数格式的列表 因为数字前面的0表示该数字是一个八进制数,请尝试将42形式的八进制数转换为十进制数,它将为您提供34 我希望这对您有所帮助,前缀为0的数字被视为以8为基

我试图理解intval的工作原理,其中一个例子是intval042=34。我知道默认基数是10,所以为什么它返回34而不是42。零在这个例子中扮演什么角色

echo intval(042); //34
echo intval(42); //42

前导的0告诉php将其解释为

八进制的042是十进制的34


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

因为数字前面的0表示该数字是一个八进制数,请尝试将42形式的八进制数转换为十进制数,它将为您提供34

我希望这对您有所帮助,

前缀为0的数字被视为以8为基数的八进制数字。0428=3410

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

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


而且,从PHP5.4开始,您甚至可以用二进制写数字:echo 0b1001;给出9。

+1关于5.4+中二进制的信息,我不知道,整洁。为了解释那些不理解基数8的人,十列实际上是八。因此,4*8+2=34,括号表示八列。