为什么这段代码只打印零?

时间:2016-12-22 17:18:09

标签: php types

为什么此代码只打印零?为什么不打印a的值?

<?php
$a=099;
echo $a;
?>

2 个答案:

答案 0 :(得分:4)

正如Ultimater指出的那样,你已经为无效的八进制数分配了$ a。

解析器假定前面带有零的数值(称为&#34;整数字和&#34;在这种情况下为#);是八进制(基数为8)的数字。由于您的数字包含9个不在基数中的9(基数为8位数为0-7),因此它无效,解析器将其评估为零。

例如, 工作:

$a = 077;
echo $a;  //63

请参阅http://php.net/manual/en/language.types.integer.php

答案 1 :(得分:1)

以“0”开头的数字是八进制数。 但是Octor号有0~7,没有8,9。 所以$a设置为零。 如果要打印'099',请尝试

$a = '099'; 
echo $a;   //print 099 

如果您想获得号码,请尝试

$a = 045; 
echo $a;    //print 37(Decimal number)