プログラミングや動画編集の勉強ならCANIT (キャニット)

PHP基礎編5:PHPでの繰り返し処理「for文」の使い方を覚えよう

PHP入門
CANIT先生
CANIT先生

今回学ぶのは「for文」です。前回の講義で学んだ「if文」とも関連があるものですね

猫田さん
猫田さん

if文? なんか聞いたことがあるなぁ

牛山くん
牛山くん

猫田さん。 if文は前回の講義で学んだばかりですよ

猫田さん
猫田さん

あれ? そうだっけ?

猫田さんのようにif文を忘れてしまった方は、前回の講義を復習しておきましょう。

猫田さん
猫田さん

復習してきました。 完全に思い出しました!

猫田さんの記憶が蘇ったところで、「繰り返し処理(ループ処理)」を担当するfor文の学習をしていきます。for文を使用すると、同じ処理を繰り返し実行させたり、箇条書きになっている文章を全て出力させたり出来ます。

猫田さん
猫田さん

よーし! じゃあ、今回もいってみよー!

PHPの学習:for文の書き方・使い方の基本

女性 パソコン
CANIT先生
CANIT先生

まずはfor文の書き方を紹介します

for文の基本的な書き方は下記の通りです。

for(初期値;条件式;増減式){

  処理

}

このような書き方をしますが、これだけだと何が書いてあるのか分からない人も多いでしょう。

猫田さん
猫田さん

はい。 さっぱりわかりません

CANIT先生
CANIT先生

そうですよね。なので、もう少し詳しく説明します

先程の例ですが……を実際には下記のように書きます。

初期値と条件式と増減式:それぞれの意味

パソコンで学ぶ男性

初期値と条件式と増減式の意味を紹介する前に、for文の処理の流れを紹介します。

  1. 変数aに0を代入
  2. 変数aが10以下の場合は処理を実行する
  3. 処理を1回実行するごとに、変数aが1ずつ増加する
  4. for文が実行されるごとに変数aの値を出力結果に表示する(改行付き)
  5. 変数aが10を超えるまでループする

このような処理になっていて、初期値というのは「for文が始まる前の変数の値」を指します。

そして、条件式は「ループ処理を行う回数」を示唆していて、増減式は「ループ1回毎に増加(減少)していく値」と考えてください。 そのため、今回は「aが1ずつ増えていく」という式を採用しています。

牛山くん
牛山くん

なるほど。 aの値が1つずつ増えていくプログラムだったんですね。 だから、1,2,3,4……と数字が1つずつ増えていったのか

具体例:②

CANIT先生
CANIT先生

では、数値を少し変えて応用してみましょう。こんな感じのプログラムを組んでみました

CANIT先生
CANIT先生

どこが変わったのか、わかりますか?

牛山くん
牛山くん

えーと……3つめの増減式の部分が変わっていますね。「$a++」だったものが「$a +=2」に変わっています

2つめの具体例では、変数aは1回ループするごとに+2ずつされます。ループの回数は0からスタートして10までなので、合計6回ですね。 このように、ループさせる際の仕様によって使い方を分けるのがfor文を使用する際のポイントです。

for文を使用する際の注意点について

猫田さん
猫田さん

今のところ、なんとなくわかった気にはなっています

牛山くん
牛山くん

キャニット先生、for文を使うときの注意点を教えてください

CANIT先生
CANIT先生

そうですね。for文の注意点は、次の2つでしょうか

  • ループ回数をキチンと確認する
  • 条件式の比較演算子を確認する

この2つの事柄はベテランでも勘違いでミスをしてしまうケースが多いです。

上記の画像を例に紹介すると、「a++」の画像では、「10回のループ」ではなく、「0~10までの11回のループ」です。

猫田さん
猫田さん

たしかに、10回のように感じちゃうかもー

もしも「10回ループさせる」という処理をしたいのならば初期値を「1」にするか、条件式の比較演算子を「<=」ではなく「<」にしなければいけません。この辺りの認識をしっかりとしていないと確認するのが面倒なミスとなってしまうので注意してください。

ちなみに、なぜ確認するのが面倒なのかというと、ループの回数をミスしてもプログラミングとしてエラーが検出されないので、どの部分でミスったのか肉眼で確認しなければならないためです。 プログラミングをしていて、最も面倒なミスが「エラーにならないミス」となっていますので、その点に関しては注意したほうが良いでしょう。

for文にfor文を重ねた処理

パソコン

前回学習した内容のif文にも「複数の条件分岐」というものがあったように、今回のfor文にも「2つのfor文を重ねる」方法が存在します。

これを「ネスト方法」とも呼びますが、簡単に言えば「2つのfor文を重ねることでプログラミングをシンプルにする」やり方です。

猫田さん
猫田さん

2つ重ねるのにシンプルになるの?

CANIT先生
CANIT先生

その疑問はもっともですが、次の例題を見るとわかりやすいと思いますよ

今回は、for文の練習問題でも使われることの多い「掛け算の九九」をfor文で出力していきます。

プログラミングと出力結果は、このようになります。わかりやすいようにコメントアウトもしておきました。

重要なポイントはコメントアウトで紹介しているために割愛しますが、この2つのfor文が表しているのは「1行ごとに計算と表示を9回繰り返して、9回改行する」ことです。

1周目のループでは変数aが1の状態でスタートしているので、1×1~1×9を表示します。

2周目では変数aが1から2へとプラスされるために、2×1~2×9となり、このループが9周目まで繰り返されるのが今回のfor文の全容です。 このように、同じような処理をまとめて繰り返すことが出来るのがfor文の強みとなっていますので、使い方を変えると「箇条書きされたデータを1つずつまとめて表示させる」というように使うことも出来ます。

テスト:実際にfor文を使ってプログラミングをしてみよう

女性
CANIT先生
CANIT先生

それでは、恒例となりました練習問題を解いていきましょう

今回はfor文の練習問題となりますが、今までに学習したことをちゃんと理解していないと出来ない仕組みになっていますので、頑張ってください。

猫田さん
猫田さん

むむっ! つまり難しいってことかー がんばるぞー

テストプログラミング内容

今回作成するfor文の条件は下記の通りです。

  • 変数を1つ作成して、その変数を配列化する
  • 配列の中身は「国語・数学・理科・社会・英語」の5つとする
  • For文を使って配列の中身をそれぞれ出力し、5回ループさせる
  • 該当する項目が「理科」の場合のみ、さらに「理科は得意科目です」と表示させる

ヒント:今までに学習した「配列」と「if文」、そして今回学習したfor文を組み合わせると作成出来ます。

テストの答え合わせ

CANIT先生
CANIT先生

では、答え合わせをしていきましょう

CANIT先生
CANIT先生

このようなプログラミングが書けていたら合格です

どのような処理をしているのかということについては、コメントアウトで説明していますので、そちらを確認してください。

このように、for文をif文、そして配列を組み合わせるとさまざまな処理が出来ます。今までに学習したことを疎かにしないで、少しずつスキルを身につけていきましょう。

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

先生
CANIT先生
CANIT先生

今回はfor文について学習してきましたね。どうでしたか?

猫田さん
猫田さん

うぅ…… テストができなかったよぉおおおお

牛山くん
牛山くん

ここまで学んだものを組み合わせるのは、やはり大変ですね。 少しずつ慣れていかないと……

今回の練習問題は今まで学習してきたことを複合したものを出題しました。PHPに限らずプログラミングは色々なテクニックを駆使するとプログラミングの行数を減らしたり、スムーズに処理が出来たりします。一方、力技でプログラミングを構築することも可能といえば可能です。

ただし、力技はあくまでも力技なので、きちんとした能力を身につけてプログラミングをしたほうが後々楽なのは言うまでもありません。

❤内容は役に立ちましたか?皆さまのご意見が励みになります☺
YesNo
手に職をつけてプログラマー転職

そろそろ本気で将来のことを考えなくちゃ……手に職をつけてプログラマーやエンジニアに転職したいなぁ。でも、プログラミングスクールってものすごくたくさんあるし、なんか敷居が高いのよね

これからプログラマーやエンジニアへの転身を目指すあなたに、どのスクールがもっとも適しているのかを紹介します。

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

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

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