2016-11-17 14 views
-1

私はなぜ私の配列の3要素を取得しないのだろうかと思います。私はそれを印刷するとき配列内に重複も印刷

$array1 = array(
     "One" => 1, 
     "Two" => 2, 
     "One" => 1 
    ); 

echo 'array1:<pre>'; print_r($array1); echo '</pre>'; 

私はこの取得:

array1: 
Array 
(
    [One] => 1 
    [Two] => 2 
) 

をこれは私が欲しいものではありません。次のように表示する必要があります。

array1: 
    Array 
    (
     [One] => 1 
     [Two] => 2 
     [One] => 1 
) 

何か助けてください。 ありがとうございます

+3

奇妙に見えますが、配列内の重複したキーを持つことはできません!できません。キーは一意でなければなりません。 – Rizier123

+0

参照[* "配列宣言の複数の要素が同じキーを使用する場合は、最後の要素のみが使用され、他の要素はすべて上書きされます" *(http://php.net/manual/en/language.types。 array.php)。それについて考えてみましょう:同じキーを持つ2つの要素がある場合、どの要素をどの要素にアクセスするのでしょうか? – Rizier123

+0

あなたは正しいです。非常に明白です。 –

答えて

2

あなたの配列は、キーと値のペアのセットです。辞書として考えて:あなたはこの1つを印刷するとき

array("elephant" => "Big grey animal with tusks", 
     "canary" => "Little Yellow Bird", 
     "elephant" => "Candy that tastes like Skittles" 
    ) 

、あなたは常に自分のコードのように、「象」の2番目の定義を取得します。 2番目の"one" => 1"one" => 77に変更してください。

PHPはトップダウンから読み込むので、最後のものは変数のように常に最終的な答えになります。 array..Iの

1

配列内にキーを重複させることはできません。したがって、array['one']を宣言することによって、前に設定した古い値をキーarray['one']に置き換えることができます。

0

使用配列は..あなたがそれを達成しようとしている

だと思う。しかし、これは array( ['one'] => array(1,3), ['two']=> 2);