php 中的前导零如何工作?

How is Leading Zero working in php?

假设我有一个代码输出 $i 作为

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

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

当您在 PHP 中以零开头的整数时,在这种情况下,029

变成八进制

所以当你回显它时,它会转换成它的十进制形式。

结果为:

echo 016; //14 (decimal) valid octal

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

实际上,它在 manual

中说明

有效的八进制:

octal       : 0[0-7]+

注意:在PHP7之前,如果在八进制整数(即8或9)中给出了无效数字,则忽略其余数字.由于 PHP 7,发出了解析错误。

八进制记数系统,简称oct,是以8为基数的记数系统,使用数字0到7。

八进制数字可以通过将连续的二进制数字分组为三个组(从右边开始)来从二进制数字组成。

例如十进制74的二进制表示为1001010,可以在左边加两个0:(00)1 001 010,对应八进制数1 1 2,八进制表示为112。

在你的问题中,$i = 016; 由解释器计算并产生 $i = 14;(这是等值的十进制数)

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