Leading Zero如何在php中工作?

Jay*_*min 5 php leading-zero

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

$i = 016;
echo $i / 2;
//ans will be 7
Run Code Online (Sandbox Code Playgroud)

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

Che*_*eta 3

当您在 PHP 中在整数前面加零时,在这种情况下,029.

它变成八进制。

因此,当您回显该内容时,它将转换为十进制形式。

其结果为:

echo 016; //14 (decimal) valid octal

echo 029; // 2 (decimal) -  Invalid octal
Run Code Online (Sandbox Code Playgroud)

其实说明书上有说明的

有效的八进制:

octal       : 0[0-7]+
Run Code Online (Sandbox Code Playgroud)

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