PHPプログラミングで人を幸せにしたい

PHPプログラミングで人を幸せにしたい


PHPプログラミングを勉強中のりょうま堂です。プログラミングは価値あるものを生み出せる数少ない技術。PHPは簡単なので入門に最適ですよ!

for文を使った見やすいループ文

PHPプログラミングの基礎

for文を使ってループ処理をしよう

ループ制御の構文には、これまでご紹介したwhile文・do/while文の他に、for文というものもあります。
for文はwhile文と同じほぼ制御をしますが、while文がカウンタの初期値を構文の外に書き、カウンタ操作を処理の中に書くのに対し、for文はすべてまとめて1つの()の中に書けるという特徴があります。
どちらでも構いませんが、for文の方が見やすいコードになるため好まれます。

for文でループ処理をする

for文を使ったループ文は、条件やカウンタ操作が一目で見やすいので、スッキリしたコードになります。
同じ処理をfor文とwhile文で書いて比較してみます。

for($num = 1; $num < 5; $num++){
  $day = $num + 7;
  echo '今日は'.$num.'日です。一週間後は'.$day.'日です。';
}
//
$num = 1;
while($num < 5){
  $day = $num + 7;
  echo '今日は'.$num.'日です。一週間後は'.$day.'日です。';
  $num++;
}
今日は1日です。一週間後は8日です。
今日は2日です。一週間後は9日です。
今日は3日です。一週間後は10日です。
今日は4日です。一週間後は11日です。
 
今日は1日です。一週間後は8日です。
今日は2日です。一週間後は9日です。
今日は3日です。一週間後は10日です。
今日は4日です。一週間後は11日です。

どちらも全く同じ制御ですが、カウンタ($num)の初期値を書く場所、カウンタの操作($numに+1)を書く場所が違いますね。
for文の場合はこれらループに必要なことをすべて一つの()の中に詰め込むことができるのです。
ただし、このときの「;」は、式の終わりを示すものではなく、3つの式を区切るためのパーテーションのようなものだと思ってください。
3つ目のカウンタ操作($num++)の右には「;」がありませんよね。

目次にもどる

continue;によるループの部分制御

switch文のコラムでサラッとご紹介しましたが、break;を使うと条件式から抜け出すことができました。
break;は制御文の一種で、ループ内で使うとその時点で強制的にループを抜け出すこともできます。
また同じく制御文のcontinue;をループ内で使うと、いったんcontinue;のところで処理が止まり、強制的にループ処理の先頭から再開することができます。
 
ではfor文の練習として、「1~30までの数字を連続して表示するが、3の倍数のときだけ表示しない」というコードを書いてみましょう。
「3の倍数である」ということは、3で割ったときの余りが「0」ということですね。

for($num = 1; $num < 31; $num++){
  $surp = $num % 3;
  if($surp == 0){
      continue;
  }
  echo $num."<br />";
}
1
2
4
5
7
8
10
11
13
14
16
17
19
20
22
23
25
26
28
29

for文の中にif文や、さらにループ文を書いたりすることもできます。
3の倍数だったとき、if文の中の処理が行われますが、ifの中にはcontinue;があるので下のecho文が飛ばされたというわけです。

目次にもどる

コメントフォーム

自分の勉強にもなりますので、コメントいただけるとうれしいです。

お名前・ニックネーム

 

タイトル

 

コメント ※HTMLタグは使えません

コメント

  • コメントはまだありません。