这是PHP中的错误吗?

Ala*_*anW 2 php

可能重复:
php数组表现奇怪,键值为07和08

我在PHP中发现了一些奇怪的东西,如果我使用数字数组,第8个数组会被忽略,这时当我把'Cherry'放入$ fruit [08]时,php接缝就会跳过它.

这是怎么回事 ?这是一个错误还是别的什么.

<pre>
<?php

$fruit[01] = "Apples";
$fruit[02] = "Pears";
$fruit[03] = "Bananas";
$fruit[04] = "Grape";
$fruit[05] = "Orange";
$fruit[06] = "Peach";
$fruit[07] = "Lemon";
$fruit[08] = "Cherry";
$fruit[09] = "Mango";

print_r($fruit);

?>
</pre>
Run Code Online (Sandbox Code Playgroud)

输出:

Array
(
    [1] => Apples
    [2] => Pears
    [3] => Bananas
    [4] => Grape
    [5] => Orange
    [6] => Peach
    [7] => Lemon
    [0] => Mango
)
Run Code Online (Sandbox Code Playgroud)

Aln*_*tak 31

由于前导零,您的索引被视为八进制数.

08并且09都将被评估为零,因此您的最后一个条目("Mango")最终在数组索引0中.


Que*_*tin 7

08 被视为八进制.

不要使用前导零.

就此而言,不要使用显式索引来创建数组:

$fruit = array(
           "Apples",
           "Pears",
           etc
         );
Run Code Online (Sandbox Code Playgroud)

(或PHP 5.4及更新版本):

$fruit = [
           "Apples",
           "Pears",
           etc
         ];
Run Code Online (Sandbox Code Playgroud)