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。
假设我有一个代码输出 $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。