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

时间:2013-04-01 13:37:30

标签: php

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

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

3 个答案:

答案 0 :(得分:7)

前导0告诉php将其解释为octal/base 8

八进制中的

042为十进制34

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

答案 1 :(得分:4)

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

实际上,这与intval无关。如果您只是写echo 042;,那么您将获得34

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

而且,从PHP 5.4开始,您甚至可以用二进制编写数字:echo 0b1001;给出9

答案 2 :(得分:1)

因为0之前的数字意味着这个数字是八进制数,尝试将42形式八进制转换为十进制它会给你34

我希望这能帮到你,