今回、二人が学習するのは「foreach」という命令です
今回もやる気まんまんですよー
「foreach文」ですか……一体、どういうものなんだろう?
では、「foreach文」がどのようなものなのか、その説明からいきましょうか
PHPの学習:foreachの書き方・使い方
foreachはfor文の親戚
最初にざっくりとイメージを掴んでもらいますね。「foreach文」は「for文」の親戚みたいなものです。「配列専門のfor文」と考えてみてください
わかりやすいような、わかりにくいような……
んー 僕もあまりピンときませんね
もう少し詳しく紹介をすると、foreachは「配列の要素がある分だけループ処理をする」命令です。
前回で学んだfor文は「初期値と条件式と増減式」の3つの要素でループさせる回数を決めていましたね。一方、foreach文は「配列の要素がある分だけループする」仕組みなので、ループさせる回数は「配列の要素の数」に依存する仕組みです。
例えば、「$color[9]」という配列があったとすると、0~9までの10個の要素が格納されているので、ループ回数も10回となります。
ループ回数があらかじめ決められている。これが「foreach文」の最大のポイントですね
PHPの学習:foreach文の書き方
では、さっそくforeach文の書き方を紹介しましょう
foreach文は下記のように書きます。
foreach(配列変数 as 要素格納変数){
実行する処理;
}
次の2つが、foreach文の大きな注意点です
- 配列変数の要素の数だけループ処理を行う
- ループするたびに、配列変数の要素の中身を変数に格納する
変数の中身は、ループ処理が実行されるごとに上書き保存されます。 それでは、具体例を使ってforeach文をさらに深く学んでいきましょう。
PHPの学習:foreachの使い方
次はforeachの使い方です。
foreach文はこのような書き方をしますが、基本的には前回学習したfor文と同じような仕組みです。
そうですね。 なんか見覚えがあります
ただし、以下の2点が異なるので注意してください。
- ループ回数が配列の要素の数に固定される
- それぞれの配列の要素が別の変数に格納される
連想配列を使ったforeachの処理
ここからはforeach文と配列の応用を学習していきましょう。
まず、配列には今まで学習してきた一次元配列の他に「連想配列」と呼ばれる使い方があります。
連想配列……まーた、難しい名前のものが出てきたねー
連想配列の書き方・使い方
ここで連想配列の書き方を紹介します。
連想配列は、配列の要素ごとに管理したいときに使われる手段です。 下のように書きます。
以前の学習で、配列に保管された要素は0から始まる数字で管理されると紹介しました。覚えていますか?
あー それはインパクトが強かったので覚えてますよー
連想配列はもっと自由で、画像のように配列を数字ではなく任意の単語で管理することが出来るんですよ
へー
連想配列を使ったforeach文
今から連想配列を使ったforeach文を紹介しますが、新しいことはほとんどありません。今までの学習内容を応用すれば対応できます
せっかくなので、「foreach文の中に連想配列を組み込む」やり方を紹介しましょう。
今回は、上記で作成した内容を流用しましたが、連想配列をforeach文で使用すると1つの変数配列を2つの要素に収めることが出来ます。 そうすると画像のように、1つの変数で2つの要素を持った出力をすることが可能です。
テスト:foreachを使ってプログラミングをしてみよう
それでは恒例のテストのお時間ですが、まずはこちらのプログラミングをみてください
前回の講義のテストと同じやつですね
使い回しだね
テスト内容
この内容を「for文を使わず、foreach文を使って同じように出力する」のが今回の課題です。さぁ、チャレンジしてみてください
なんか、これはいけそうだなぁ
テストの答え合わせ
はい。では、答え合わせをしてみましょう。以下のようにプログラミングできていたら、合格ですよ
このようにfor文とforeach文は、書き方を変えるだけで同じ対応することも出来ます。
PHPの学習:「foreach文」まとめ
というわけで……今回は配列のためのfor文と呼ばれるforeach文と、配列の応用編として連想配列の2つを学習しました
また賢くなったなぁ
今回はちょっと難しかったので、復習しておきます
for文で足りることも多いですが、ループ処理が複雑化してくるとforeach文を覚えていなければ管理が難しい場面もあります。「for文で対応すればいいや」とせずに、foreach文も必ず覚えておいてくださいね。
さて、 次回はif文とfor文が組み合わさった「while文」を学んでいきましょう。
引き続き、がんばるぞー