PHP基礎編6:foreachを理解して、配列をマスターしよう

PHP入門
CANIT先生
CANIT先生

今回、二人が学習するのは「foreach」という命令です

猫田さん
猫田さん

今回もやる気まんまんですよー

牛山くん
牛山くん

「foreach文」ですか……一体、どういうものなんだろう?

CANIT先生
CANIT先生

では、「foreach文」がどのようなものなのか、その説明からいきましょうか

PHPの学習:foreachの書き方・使い方

プログラマー

foreachはfor文の親戚

CANIT先生
CANIT先生

最初にざっくりとイメージを掴んでもらいますね。「foreach文」は「for文」の親戚みたいなものです。「配列専門のfor文」と考えてみてください

猫田さん
猫田さん

わかりやすいような、わかりにくいような……

牛山くん
牛山くん

んー 僕もあまりピンときませんね

もう少し詳しく紹介をすると、foreachは「配列の要素がある分だけループ処理をする」命令です。

前回で学んだfor文は「初期値と条件式と増減式」の3つの要素でループさせる回数を決めていましたね。一方、foreach文は「配列の要素がある分だけループする」仕組みなので、ループさせる回数は「配列の要素の数」に依存する仕組みです。

例えば、「$color[9]」という配列があったとすると、0~9までの10個の要素が格納されているので、ループ回数も10回となります。

CANIT先生
CANIT先生

ループ回数があらかじめ決められている。これが「foreach文」の最大のポイントですね

PHPの学習:foreach文の書き方

プログラミング学習
CANIT先生
CANIT先生

では、さっそくforeach文の書き方を紹介しましょう

foreach文は下記のように書きます。

foreach(配列変数 as 要素格納変数){

  実行する処理;

CANIT先生
CANIT先生

次の2つが、foreach文の大きな注意点です

  • 配列変数の要素の数だけループ処理を行う
  • ループするたびに、配列変数の要素の中身を変数に格納する

変数の中身は、ループ処理が実行されるごとに上書き保存されます。 それでは、具体例を使ってforeach文をさらに深く学んでいきましょう。

PHPの学習:foreachの使い方

次はforeachの使い方です。

foreach文はこのような書き方をしますが、基本的には前回学習したfor文と同じような仕組みです。

牛山くん
牛山くん

そうですね。 なんか見覚えがあります

ただし、以下の2点が異なるので注意してください。

  • ループ回数が配列の要素の数に固定される
  • それぞれの配列の要素が別の変数に格納される

連想配列を使ったforeachの処理

プログラミング

ここからはforeach文と配列の応用を学習していきましょう。

まず、配列には今まで学習してきた一次元配列の他に「連想配列」と呼ばれる使い方があります。

猫田さん
猫田さん

連想配列……まーた、難しい名前のものが出てきたねー

一次元配列では「1つの配列の要素の中に1つのデータを保存する」というものでした。一方、連想配列は「1つの配列の要素の中に『連動したもう1つのデータ』を保存する」のが特徴的です。

連想配列の書き方・使い方

ここで連想配列の書き方を紹介します。

連想配列は、配列の要素ごとに管理したいときに使われる手段です。 下のように書きます。

CANIT先生
CANIT先生

以前の学習で、配列に保管された要素は0から始まる数字で管理されると紹介しました。覚えていますか?

猫田さん
猫田さん

あー それはインパクトが強かったので覚えてますよー

CANIT先生
CANIT先生

連想配列はもっと自由で、画像のように配列を数字ではなく任意の単語で管理することが出来るんですよ

猫田さん
猫田さん

へー

連想配列では「=>」を使用します。これはラベルのような働きになっていて、「赤色」を管理しているのが「red」というラベルだと表しています。

連想配列を使ったforeach文

CANIT先生
CANIT先生

今から連想配列を使ったforeach文を紹介しますが、新しいことはほとんどありません。今までの学習内容を応用すれば対応できます

せっかくなので、「foreach文の中に連想配列を組み込む」やり方を紹介しましょう。

今回は、上記で作成した内容を流用しましたが、連想配列をforeach文で使用すると1つの変数配列を2つの要素に収めることが出来ます。 そうすると画像のように、1つの変数で2つの要素を持った出力をすることが可能です。

テスト:foreachを使ってプログラミングをしてみよう

パソコン
CANIT先生
CANIT先生

それでは恒例のテストのお時間ですが、まずはこちらのプログラミングをみてください

牛山くん
牛山くん

前回の講義のテストと同じやつですね

猫田さん
猫田さん

使い回しだね

テスト内容

CANIT先生
CANIT先生

この内容を「for文を使わず、foreach文を使って同じように出力する」のが今回の課題です。さぁ、チャレンジしてみてください

猫田さん
猫田さん

なんか、これはいけそうだなぁ

テストの答え合わせ

CANIT先生
CANIT先生

はい。では、答え合わせをしてみましょう。以下のようにプログラミングできていたら、合格ですよ

このようにfor文とforeach文は、書き方を変えるだけで同じ対応することも出来ます。

PHPの学習:「foreach文」まとめ

プログラマー
CANIT先生
CANIT先生

というわけで……今回は配列のためのfor文と呼ばれるforeach文と、配列の応用編として連想配列の2つを学習しました

猫田さん
猫田さん

また賢くなったなぁ

牛山くん
牛山くん

今回はちょっと難しかったので、復習しておきます

for文で足りることも多いですが、ループ処理が複雑化してくるとforeach文を覚えていなければ管理が難しい場面もあります。「for文で対応すればいいや」とせずに、foreach文も必ず覚えておいてくださいね。

さて、 次回はif文とfor文が組み合わさった「while文」を学んでいきましょう。

猫田さん
猫田さん

引き続き、がんばるぞー

❤内容は役に立ちましたか?皆さまのご意見が励みになります☺
YesNo
無料でスキルを学んでからIT業界に転職

そろそろ本気で将来のことを考えなくちゃ……手に職をつけてIT業界に転職したいなぁ。でも、業界未経験だから、なんか敷居が高そう、と思っている方へ。

これからIT業界への転身を目指すあなたに、無料でスキルアップできて、平均で年収は90万円もアップできるんです。

PHP入門
【この記事を書いた人】
CANIT 先生

あらゆるプログラミング言語をあやつるフリーの凄腕講師。温和な性格で「わかるまで教えます」がモットー。たまに時間ができると動物の仲間達に、プログラミングを教えることもある。現在の生徒は牛山くんと猫田さん。

タイトルとURLをコピーしました