
繰り返しや同じ処理を行うときに使用するPHPの「ループ(loop)」文。ループ文の代表的なものとして「while文」・「for文」・「foreach文」があります。
今回の記事では、PHP初心者の方に向けて、while文とfor文とforeach文の解説をしていきます。
while文とは
while文とは、ループ処理を行う回数が決まっていないときに使用するループ文です。後ほど紹介するfor文とくらべ、使用頻度は少ないですが、PHPのループ文の中で最も簡単なものなので、まずはwhile文からループ処理について学習していくと良いと思います。
while文の書き方
while文の基本の書き方を見ていきましょう。
<?php $ num = 0; while($ num < 20){ var_dump($ num); ++$ num; }
では、上から順番に細かく解説してきます。
①whileの後ろに「()」を記述。「()」内がループが実行される条件です。「()」内の条件式が成立している、trueの間はループ処理が実行されます。
②「()」に続いて、「{}」の中を見ていきます。
「{}」内には、ループで実行させる処理の内容を書きます。
上記例文では、
「var_dump($ num);
++$ num;」
となっています。
while文の重要なポイントは、「{}」の中には「()」内で使用した数値(変数など)を変更する処理を入れなければいけないということです。
③まず、前半の「var_dump($num)」。「var_dump」は、変数の情報を表示する関数で、あとに続く「()」内を表示させます。
④後半の「++$ num」は、「1度処理を行う度に変数numの値に1を足してください。」という指示です。2を足したい場合は、「$ num + 2」、3を引きたい場合は、「$ num – 3」というように算術演算子を用いて自由に設定できます。
もし、「++$ num」の記述をしなかった場合、変数numは永遠に「0」のまま、「num < 20」が永遠に成立してしまい無限ループに陥ってしまいます。
上記のときは、ループ処理を途中で抜け出す制御構文「break」が使えます。
break文の書き方
<?php $ num = 0; while($ num < 20){ var_dump($ num); ++$ num; if (num > 100){ break; } }
「if (num > 100){
break;
}」
の部分がbreak文です。
上記break文の場合だと、「もし変数numが100より大きな数になったら、ループを抜け出してください。」という指示になります。
「条件分岐if」については、PHPの基本構文その1 条件分岐で説明しておりますので、宜しければご覧ください。
最新情報をいち早くお届け!
無料会員登録していただくと、
会員限定の特別コンテンツ記事を最後まで
読むことができます!
その他、更新情報・イベント情報を
お届けいたします。
for文とは
for文とは、ループ処理を行う回数が決まっているループ文です。for文の基本の書き方を見ていきましょう。
<?php for($ num = 0; $ num < 10; ++$ num){ echo $ num; }
「echo $ num;」が10回繰り返して実行されます。(0から数え始め、0~9で10回です)出力結果は下記のようになります。
0123456789
上から順番に細かく解説してきます。
①forの後ろに「()」を記述。「()」内が、ループが実行される条件です。
②「()」の中を「;」ごとに区切って見ていきます。
「$ num = 0」「$ num < 10」「++$ num」の3つに分けることができます。
③まず「$ num = 0」ですが、「初期化」と呼ばれる部分です。上記例文の場合「変数numの最初の数値は0です。」と宣言していると考えてください。
重要なのが、初期化処理は、for文が実行される前の初めの1回しか処理が行われないということです。覚えておいてください。
④続いて、「$ num < 10」です。「条件式」と呼ばれる部分で、上記例文の場合「変数numが10以下の場合はループ処理を実行し続けてください。」という指示です。変数numが10以上になった時点で、ループ処理から抜けます。
⑤最後に、「++$ num」です。「更新式」と呼ばれる部分で、上記例文の場合「1度処理を行う度に変数numの値に1を足してください。」という指示です。2を足したい場合は、「$ num + 2」、3を引きたい場合は、「$ num – 3」というように算術演算子を用いて自由に設定できます。
算術演算子がわからない方は、下記リンク先で詳しく解説されていますのでご覧ください。
for文が実行され続けている限り、更新式も処理され続けます。
以上で「()」内の説明は終わりです。
⑥「()」に続いて、「{}」の中を見ていきます。
「{}」内には、ループで実行させる処理の内容を書きます。上記例文では、「echo $ num;」となっており、重要なのが、先述した「()」で使われている変数「num」をそのまま使用する、という点です。
while文・for文の基本の書き方、見方は理解できたでしょうか。次の章では、同じループ処理を行うwhile文とfor文の使い分けについて解説していきます。
while文とfor文と違い
while文とfor文の大きな違いは「ループ処理の回数を記述するかしないか」です。while文はループの回数を記述せず、特定の条件に当てはまった場合にbreakさせる形をとります。breakさせないと無限ループになってしまうので、breakとwhile文はセットで使うと考えた方が良いでしょう。
一方、for文はループの回数を記述し、指定した回数に達したらループを自動で抜け出します。
つまり、
- 繰り返す数が決まっておらず、特定の条件を満たすまで繰り返す場合→while文
- 繰り返す数が決まっており、指定の回数まで繰り返す場合→ for文
ということになります。
foreach文とは
配列をループ処理したいときに使うループ文です。foreach文の基本の書き方を見ていきましょう。
<?php $nums = [ ‘1’ , ‘2’ , ‘3’ , ‘4’ , ‘5’ ]; foreach($ nums as $ num) { echo $ num; }
出力結果は下記のようになります。
12345
①配列に(ここでは$nums)出力したい値を記述します。
②($ nums as $ num)の記述で
配列の要素を変数(ここでは$num)に代入しています。
上記のforeach文を少し活用すると
<?php $nums = [ ‘1’,‘2’,‘3’,‘4’,‘5’ ]; foreach($ nums as $ num) { $ num = $num * 2 ; echo $ num; }
出力結果は下記のようになります。
246810
まとめ
while文とfor文の違いについて、分かっていただけましたでしょうか。さらに、foreach文も上手に利用すればとても有効です。正しく理解して、うまく使い分けられるようになりたいですね。
- 最新記事