我现在来自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 )
答案 0 :(得分:1)
是的,密钥将由PHP自动生成。
如果你的最大键数为10,则新元素将为11,12等等。
答案 1 :(得分:1)
这是定义的行为。请参阅PHP documentation for arrays:
密钥是可选的。如果未指定,PHP将使用先前使用的最大整数键的增量。
答案 2 :(得分:1)
行为由PHP规范定义。如果您插入新元素而未指定键:
如果数组已包含至少一个整数键,则会获取最大的这些键,递增,并用作插入时的新密钥。
如果数组不包含整数键,则自动分配的键将为 0 。