<php
$quiz = [];
$quiz[] = [
'q' => 'What is A?',
'a' => ['A0', 'A1', 'A2', 'A3']
];
$quiz[] = [
'q' => 'What is B?',
'a' => ['B0', 'B1', 'B2', 'B3']
];
$quiz[] = [
'q' => 'What is C?',
'a' => ['C0', 'C1', 'C2', 'C3']
];
上記のように、同じ変数に新しい値を入れても上書きされないのでしょうか?
またそれは何故ですか?
よろしくお願いします!
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
PHPマニュアル:配列 の項を熟読し、1つ1つ挙動を確かめてください。
「1つ1つ挙動を確かめる」というのは代入直後に出力して変数の状態を確かめることです。
php
1<?php 2$quiz = []; 3var_dump($quiz); 4$quiz[] = [ 5 'q' => 'What is A?', 6 'a' => ['A0', 'A1', 'A2', 'A3'] 7]; 8var_dump($quiz); 9$quiz[] = [ 10 'q' => 'What is B?', 11 'a' => ['B0', 'B1', 'B2', 'B3'] 12]; 13var_dump($quiz); 14$quiz[] = [ 15 'q' => 'What is C?', 16 'a' => ['C0', 'C1', 'C2', 'C3'] 17]; 18var_dump($quiz); 19
提示のコードの大きな間違いを直しています。気を付けましょう。
<php
→<?php
投稿2019/10/24 13:20
総合スコア80875
0
PHP: 配列 - Manual
「角括弧構文で作成/修正」のサンプルコードも含めて読んで確認していただきたいですが、
$quiz[] = ~~~;
ってのは$quiz[]
の最後の要素の次に追加する書き方です。
$quiz[]
を初期化した直後であればキー値0として、ひとつめの要素になります。
キーを指定していないので、けっして上書きなどしていないのです。
$quiz[] = [~~,~~,~~];
っていうのは、
$quiz[]
の最後の要素に、(数値そのものや文字列そのものではなく)配列をまるっと格納することになります。
投稿2019/10/25 00:44
編集2019/10/25 01:26退会済みユーザー
総合スコア0
0
ベストアンサー
そもそも上書きされるような記述の仕方をしていないからです。
$quiz[] =
では、「新しい要素として追加」です。
php
1<?php 2 3$quiz = []; 4$quiz[] = [ 5'q' => 'What is A?', 6'a' => ['A0', 'A1', 'A2', 'A3'] 7]; 8$quiz[] = [ 9'q' => 'What is B?', 10'a' => ['B0', 'B1', 'B2', 'B3'] 11]; 12$quiz[] = [ 13'q' => 'What is C?', 14'a' => ['C0', 'C1', 'C2', 'C3'] 15]; 16var_dump($quiz);
・結果
array(3) { [0]=> array(2) { ["q"]=> string(10) "What is A?" ["a"]=> array(4) { [0]=> string(2) "A0" [1]=> string(2) "A1" [2]=> string(2) "A2" [3]=> string(2) "A3" } } [1]=> array(2) { ["q"]=> string(10) "What is B?" ["a"]=> array(4) { [0]=> string(2) "B0" [1]=> string(2) "B1" [2]=> string(2) "B2" [3]=> string(2) "B3" } } [2]=> array(2) { ["q"]=> string(10) "What is C?" ["a"]=> array(4) { [0]=> string(2) "C0" [1]=> string(2) "C1" [2]=> string(2) "C2" [3]=> string(2) "C3" } } }
上書きの確認ならコードは以下でしょう。
php
1<?php 2 3$quiz = []; 4$quiz = [ 5'q' => 'What is A?', 6'a' => ['A0', 'A1', 'A2', 'A3'] 7]; 8$quiz = [ 9'q' => 'What is B?', 10'a' => ['B0', 'B1', 'B2', 'B3'] 11]; 12$quiz = [ 13'q' => 'What is C?', 14'a' => ['C0', 'C1', 'C2', 'C3'] 15]; 16var_dump($quiz);
・結果
array(2) { ["q"]=> string(10) "What is C?" ["a"]=> array(4) { [0]=> string(2) "C0" [1]=> string(2) "C1" [2]=> string(2) "C2" [3]=> string(2) "C3" } }
投稿2019/10/24 21:14
総合スコア821
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。