假设我有一个输出$i
为
$i = 016;
echo $i / 2;
//ans will be 7
我知道前导零表示PHP中的八进制数,但它是如何解释的,它是如何执行的?有人可以一步一步地分享它的执行吗?解析器在这里的作用是什么?我已经研究了很多,并阅读了所有以前的答案,但没有一个有任何深刻的解释。
答案 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。