使用整数键在顺序数组上自动分配键

时间:2016-11-16 18:50:24

标签: php

我现在来自C ++并学习PHP。

当使用带有键赋值的数组时,我注意到如果你在没有指定键的情况下向数组中添加一个元素,它就会自动赋值。

这是未定义的行为还是PHP处理它?<​​/ p>

$var = array( 1 => "The", 2 => "Rabbit", 3 => "Hole" );
$var[] = "Goes"; //add elements without specifying the key
$var[] = "Down";

print_r($var);

将输出:

Array ( [1] = The [2] = Rabbit [3] = Hole [4] = Goes [5] = Down )

通过使用字符键并添加而不指定键,它将添加到[0]

$var2 = array ( 'a' => "All", 'b' => "The", 'c' => "Single" );
$var2[] = "Ladies";
print_r($var2);

将输出:

Array ( [a] = All [b] = The [c] = Single [0] = Ladies )

3 个答案:

答案 0 :(得分:1)

是的,密钥将由PHP自动生成。

如果你的最大键数为10,则新元素将为11,12等等。

答案 1 :(得分:1)

这是定义的行为。请参阅PHP documentation for arrays

  

密钥是可选的。如果未指定,PHP将使用先前使用的最大整数键的增量。

答案 2 :(得分:1)

行为由PHP规范定义。如果您插入新元素而未指定键:

如果数组已包含至少一个整数键,则会获取最大的这些键,递增,并用作插入时的新密钥。

如果数组不包含整数键,则自动分配的键将为 0

请参阅PHP documentation