<?php
$fruits = ["りんご", "ぶどう", "もも"];
?>
この配列で「もも」にアクセスする場合は
「$fruits[2]」というように数字を使いましたね。
今は3つしかないので「何番目か」というのは簡単に指定できますが、
例えば、$fruitsに要素が全部で2000個入っていたらどうでしょう?
$fruitsの1384番目にアクセスして…
とか普通数えていられないですよね。
そんな時、連想配列というのを使うとこの問題が解決します。
連想配列の書き方
連想配列を使うと、例えば「りんご」に「apple」という名前をつけておくことができます。
指定方法は、このようにします。
「’apple’ => ‘りんご’」
こうすることで、今まで「りんご」の位置を数えて0番目だ!ということで、
$fruits[0]
と表現していたのを「りんご」につけた「apple」という名前を使って
$fruits[‘apple’]
と書くことができます。
他の「ぶどう」と「もも」にも名前をつけておくと、こんな感じになります。
<?php
$fruits = ['apple' => 'りんご','grape' => 'ぶどう', 'peach' => 'もも'];
echo $fruits['apple'];
echo $fruits['grape'];
echo $fruits['peach'];
?>
アクセスするときは「配列$fruitsの中にある’apple’」と指定します。
すると「apple」に対応する「りんご」が表示されます。
連想配列は、実は今までの配列と同じ?
一見、連想配列の「=>」を使ったら複雑になるように見えますが、
実は普通の配列と同じことをやっています。
通常の配列は「=>」を省略した場合、
<?php
$fruits = [0 => 'りんご',1 => 'ぶどう', 2 => 'もも'];
echo $fruits[0];
echo $fruits[1];
echo $fruits[2];
?>
このように、「0, 1, 2」というようにデフォルトで名前がつくようになっているのです。
そのため「りんご」と言いたい時は「$fruits[0]」のように数字を使って表現できるというようになっています。
ループ(foreach)で全件出力!
<?php
$fruits = [りんご','ぶどう', 'もも'];
echo $fruits[0];
echo $fruits[1];
echo $fruits[2];
?>
今までこのように、一件ずつ表示させていましたがforeachを使うと一気に表示できます。
<?php
$fruits = ['りんご','ぶどう', 'もも'];
foreach($fruits as $item) {
echo $item;
echo '<br>';
}
?>
<出力結果>
りんご
ぶどう
もも
foreachの使い方
まず、foreachはループの一種です。
foreachのしくみ
「配列の中から一つ取り出して変数に入れる」
というのを配列の個数分繰り返されます。
1回目のループでは、りんごが取り出されて$itemの中に入ります。
2回目の1回目のループでは、ぶどうが取り出されて$itemの中に入ります。
3回目の1回目のループでは、ももが取り出されて$itemの中に入ります。
まとめ
- 連想配列は、要素に名前をつけて、その名前でアクセスできるようになる
- foreachは、配列の要素の個数分ループする。→配列を全件出力するときに便利