Php 带前导零的整数数组-奇怪的结果

Php 带前导零的整数数组-奇怪的结果,php,arrays,Php,Arrays,编辑:我应该注意到我知道我可以使用引号。谢谢你的回答,我从没听说过八进制 我注意到了一些事情,这更多的是一个好奇的问题,而不是需要帮助。为什么会发生这种情况 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]

编辑:我应该注意到我知道我可以使用引号。谢谢你的回答,我从没听说过八进制

我注意到了一些事情,这更多的是一个好奇的问题,而不是需要帮助。为什么会发生这种情况

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,一切都是一团糟。什么原因导致这种情况?

前导零的数字被PHP理解为八进制数

如果你不知道八进制数是什么,请阅读。简言之,它们是以8为基数的数字。我们在日常生活中使用的数字是以10为基础的


现在,正如您所指出的,
08
09
给出了
0
。因为它们不是有效的八进制数字。因此,
010
实际上是十进制的
8
,以此类推。

如果您想使用带前导零的整数,您必须将它们存储为PHP中的stings,否则它们可以变成八进制

像这样:

array('01', '02', '03');
一个字。。。。八进制--除非你知道自己在做什么,否则不要给出前导零的数字