Leading Zero如何在php中工作?

时间:2017-08-17 05:50:26

标签: php leading-zero

假设我有一个输出$i

的代码
$i = 016;
echo $i / 2;
//ans will be 7

我知道前导零表示PHP中的八进制数,但它是如何解释的,它是如何执行的?有人可以一步一步地分享它的执行吗?解析器在这里的作用是什么?我已经研究了很多,并阅读了所有以前的答案,但没有一个有任何深刻的解释。

2 个答案:

答案 0 :(得分:2)

当你在PHP中使用零之前的整数时,在那个实例中029

变成八进制。

所以当你回应它时,它会转换为十进制形式。

结果是:

echo 016; //14 (decimal) valid octal

echo 029; // 2 (decimal) -  Invalid octal

实际上,它在manual

中说明了

有效的八进制:

octal       : 0[0-7]+

注意:在PHP 7之前,如果在八进制整数(即8或9)中给出了无效数字,则忽略该数字的其余部分。从PHP 7开始,会发出一个解析错误。

答案 1 :(得分:2)

八进制数字系统,或简称oct,是base-8数字系统,使用数字0到7。

通过将连续的二进制数字分组为组(从右侧开始),可以使用二进制数字制作八进制数字。

例如,十进制74的二进制表示是1001010.左边可以添加两个零:(00)1 001 010,对应八进制数字1 1 2,产生八进制表示112.

在您的问题in_func()由解释器计算并生成$i = 016;(这是等效十进制数)

然后你只需将其除以2,即输出7。