2014-08-28 29 views
2

編輯:我應該注意到,我知道我可以使用引號。謝謝你的答案,我從來沒有聽說過八月。前導零的整數數組 - 奇怪的結果

我注意到了一些東西,這是一個好奇心問題,而不是需要幫助。爲什麼會發生?

print_r(array(00,01,02,03,04,05,06,07,08,09,010,011,012,013,014,015,016,017,018,019,020)); 

Array 
(
    [0] => 0 
    [1] => 1 
    [2] => 2 
    [3] => 3 
    [4] => 4 
    [5] => 5 
    [6] => 6 
    [7] => 7 
    [8] => 0 
    [9] => 0 
    [10] => 8 
    [11] => 9 
    [12] => 10 
    [13] => 11 
    [14] => 12 
    [15] => 13 
    [16] => 14 
    [17] => 15 
    [18] => 1 
    [19] => 1 
    [20] => 16 
) 

一旦它命中8,一切都搞砸了。這是什麼原因?

+7

一個字.... __OCTAL__ - http://nl1.php.net/manual/en/language.types.integer.php - 不給號碼前導零除非你知道你在做什麼 – 2014-08-28 23:24:39

回答

6

具有前導零的數字被理解爲PHP的OCTAL數字。

如果您不知道什麼是OCTAL號碼,請閱讀wikipedia。簡而言之,他們是基數爲8的數字。我們在日常生活中使用的數字以10爲基礎。

現在,如您所述,0809給出0。因爲它們不是有效的八進制數。因此010實際上是Decimal中的8,依此類推。

2

如果你想要使用前導零的整數,你必須將它們作爲stings存儲在PHP中,否則它們可以變成八進制。

像這樣:

array('01', '02', '03');