带前导零(09)的数字值打印为“0”...为什么?

时间:2015-04-22 00:52:31

标签: php

这是PHP块:

<?php    
    print 09;        
?>

结果:

0

为什么结果为0而不是09或9或0x9或其他任何东西?

2 个答案:

答案 0 :(得分:4)

前导零表示八进制值。因此,01在八进制中是1,在十进制中也是1。 010是八进制的10,十进制是8。 09不是有效的八进制数,因为八进制系统中没有数字9(只有0-7),所以PHP默默地忽略你的错误并给你零。

事实上,PHP会在八进制数字中的无效数字后忽略所有内容:01493 == 014 == 12。有趣的是,它不会忽略无效的十六进制数字:0xfgf是一个错误。

在这种情况下,各种语言对于他们应该做什么有不同的看法。例如,JavaScript会忽略八进制提示:010为8,但09为9。

答案 1 :(得分:0)

您需要输入引号,以便print可以将其视为String而不是Integer

尝试:

print "09";

echo "09";