2015-06-03 47 views
1

1.腳本啓動:怪異輸出,當數與0

$num = "00445790"; 
echo $num; 

回報:

00445790 

2.腳本

$num = 00445790; 
echo $num; 

回報:

2351 

有人可以解釋爲什麼我在第二個腳本上獲得2351

+5

你需要了解的數據類型 –

+0

這裏是從哪裏開始http://php.net/manual/zh/language.types.php – RiggsFolly

+1

我重新打開這個問題,原來的複製沒有涵蓋' 9'在號碼。 –

回答

7

Integers以零開始考慮八進制。由於八進制整數僅使用0到8之間的數字,因此忽略來自9的所有內容。

所以00445790變成004457這就是2351十進制。

+0

謝謝,這真的清除了它。我很困惑,爲什麼會發生這種情況,但這很有道理!再次感謝。 –

+0

這聽起來很奇怪。即使PHP是一種解釋器語言,它也可以發現數字序列在某種程度上是不正確的(如果前導零是主要的,那麼這是一個錯誤的八進制)並且應該發出警告。或者認識到它實際上是一個十進制數,並將其視爲如此。 (我的PHP日子已經有一段時間了...) –

+0

@ThomasKilian一個警告將有助於這樣的情況,而不是一個潛在的難以發現的錯誤。 –