0

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

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

3 回答 3

9

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

042八进制是34十进制。

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

于 2013-04-01T13:38:44.040 回答
6

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

事实上,这与intval. 如果你只是写echo 042;你会得到34

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

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

于 2013-04-01T13:40:21.213 回答
1

因为数字前的 0 表示这个数字是八进制数,尝试将 42 从八进制转换为十进制,它会给你 34

我希望这对你有帮助,

于 2013-04-01T13:39:42.560 回答