2016-12-22 53 views
1

爲什麼此代碼只打印零?它爲什麼不打印一個值?這段代碼爲什麼只打印零點?

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

不是有效的八進制 – Ultimater

+1

回聲是指打印'string'和你'$一個'是一個整數,試試這個 - '$ a ='099'; echo $ a;' –

+1

它完成了你要求它做的事情。如果你想輸出一個字符串,你需要設置'$ a ='099';' – happymacarts

回答

4

正如Ultimater指出的,您已將$ a分配給無效的八進制數。

解析器假定一個數值(在本例中稱爲「整數字面量」)是一個八進制數(基數8)。由於您的號碼包含不在基數中的九個數(基數爲8的數字爲0-7),因此它無效,解析器將其評估爲零。

例如,這確實工作:

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

http://php.net/manual/en/language.types.integer.php

1

數量開始與 '0' 是八進制數。 但是Octor編號有0〜7,沒有8,9。 所以$a設爲零。 如果你想打印「099」,嘗試

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

如果你想獲得數量,儘量

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