2016-11-16 10 views
0

私は現在C++から来てPHPを学習しています。整数キーを使用して順次配列にキー自動割り当て

キー割り当てで配列を使用すると、キーを指定せずに配列に要素を追加すると、キーが自動的に割り当てられます。

これは未定義の動作ですか、それともPHPが処理しますか?

$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

確かに_undefined_ http://php.net/manual/en/language.types.array.php#language.types.array.syntax.modifying – AbraCadaver

+1

[これは未定義ではありません](http://php.net /manual/en/language.types.array.php#language.types.array.syntax.modifying)マニュアルでは、 'キーが指定されていなければ、既存の整数インデックスの最大値が取られ、新しいキーはその最大値プラス1(しかし、少なくとも0)。整数インデックスが存在しない場合、キーは0(ゼロ)になります。 –

答えて

1

動作はPHP仕様で定義されています。あなたは、キーを指定せずに新しい要素を挿入する場合:

を配列はすでにキー少なくとも一つ整数が含まれている場合は、これらのキーの最大は、をインクリメントし、新しいキーとして使用、取られます挿入時に。

配列に整数のキーが含まれていない場合、自動的に割り当てられるキーはになります。

PHP documentationを参照してください。

1

はいキーはPHPによって自動生成されます。

最大キーが10の場合、新しい要素は11,12などとなります。

1

これは動作が定義されています。 PHP documentation for arrays

キーはオプションです。指定されていない場合、PHPは以前に使用された最大の整数キーの増分を使用します。

関連する問題