【PHP初心者】繰り返し処理while文の書き方

どーも、もんたです。

早速ですが、今回はPHPの繰り返し処理while文について学んでいきたいと思います。

繰り返すだけのコードなのに使うことあるん?とか思ってましたが実際当たり前のように使いますね。

前回の記事では条件分岐についてお話しましたが、繰り返し処理も条件分岐と同じようにいくつか記述方法があります。

今回はその内の一つ、while文について学んでいきます。

では早速進んでいこう。

\今ならU-NEXT無料登録で 600円分のポイントプレゼント/
※無料期間中に解約すれば料金は一切発生しません

while文とは?

while文とは、同じプログラム処理を繰り返し実行するように命令するためのコードだ。

ループ処理とも言うが、同じ要領で全く同じようコードを繰り返し入力するのは効率が悪いので、自動的に繰り返しで処理をさせるるコードを使うのが一般的。

例えば、普通に考えると1〜100の数字を出力するには、単純にechoを100回書かなければならないが、こういった繰り返し処理を使えばechoは1行で済む。

while文の書き方

まずはwhile文の基本的な書き方を見てみよう。

while(条件){
  〜処理〜
}

このように、()内に繰り返し処理を実行する条件を書き、while文{}波括弧の中に繰り返したい処理を記述する。

この基本構文に実際の例を当てはめて書くと以下のようになる。尚、右側にはコードの解説。

$count = 1;   //変数の定義

while($count <= 10){   //変数countが10以内だったら繰り返し
  echo $count;   //変数countを出力
  $count++;  //変数countに1を足す
}

上記の例では、まずwhile文を実行する前に前提として変数countに数字の1を定義してある。

次にwhile文の条件を($count <= 10)としてあるが、これは変数countの値が10以内だったらwhile文中の処理を繰り返すということ。

変数countは数字の1を代入してあるので、もちろんwhile文の中の処理が実行されechoで変数countが出力される。

そして次の行で変数countに1が足された後、最初の条件()の部分まで戻りその条件が当てはまらなくなるまで同じプログラムが繰り返し実行されるという構造になっている。

最後の行は、2以上の数字を足すとなるとその数字そのものを入力しないといけないが、1を足したいだけなら「++」と入力することができる。

ちなみに「$count++」(指定の変数に1を足す)という部分は記述忘れのないように注意。(理由は後述)

上記の出力結果は以下のようになるはずだ。

12345678910

改行コードを入力していないのでそのまま連続で数字が並んでいるが、ちゃんと繰り返されている。

無限ループ

そして、先ほど「$count++」(指定の変数に1を足す)という部分は記述忘れのないように注意と書いたが、その理由を説明する。

まずは以下の例を見てみよう。

$count = 1;   //変数の定義

while($count <= 10){   //変数countが10以内だったら繰り返し
  echo $count;   //変数countを出力

}

変数countに1を足すための「$count++」のコードが抜けてるのが分かるが、この書き方だとどのような現象が起きるだろうか。

言うまでもないが変数countに1を足さなければ、変数countは永遠と1のままだ。

そうなるとwhile文の条件である「10以内なら繰り返し」という条件が永遠と当てはまってしまう。

従って、この出力結果は無限ループ(エラー)となる。

なのでこの記述は必ず忘れないよう注意が必要。

breakやcontinueを併用すると

さて次ですが、条件分岐if文でbreakやcontinueを併用することで更に複雑な処理をすることができる。

breakで強制的に抜ける

まずはif文とbreakを併用した以下の例を見てみよう。

$count = 1;   //変数の定義

while($count <= 10){     //変数countが10以内だったら繰り返し
  if($count >= 6){       //変数countが6以上だったら
    break;               //while文を強制的に抜ける
  }
  echo $count;          //変数countを出力
  $count++;             //変数countに1を足す
}

まず、これまでと同様で変数countに1を代入してある。

そしてwhile文の条件で、変数countが10以内だったら繰り返しという条件式が記述されている。

なのでこれだけ見ると1〜10まで繰り返し出力されると思うかもしれないが、実際は違う。

よく見るとwhile文の中にif文があり、そのif文の中にはbreakが記述されている。

前回のswich文でも学んだが、breakは強制的にその処理を抜けるという命令なので、上記の例では「変数countが6以上になったらwhile文を強制的に抜ける」ということになる。

つまり、breakを読み込んだ後はbreakの下の処理は実行されずに終わる。

従って、上記の出力結果としては次のようになる。

12345

continueでスキップ

では次にif文とcontinueを併用した以下の例を見てみよう。

$count = 1;   //変数の定義

while($count <= 10){     //変数countが10以内だったら繰り返し
  if($count % 2 == 0){   //変数countが2の倍数なら
    $count++;            //変数countに1を足す
    continue;            //次の週へスキップ
  }
  echo $count;          //変数countを出力
  $count++;             //変数countに1を足す
}

こちらの例でもbreak例と同じくcountの変数定義の後、while文の条件で「変数countが10以内なら繰り返し」となっている。

今回はif文によって「変数countが2の倍数だったら」と2の倍数の時だけはif文中の処理が実行されるということになる。

そしてif文の中には、「$count++」の次の行にcontinueが記述されている。

continueは次の週へスキップするという命令なので、上記の例では「変数countが2の倍数の時は、1だけ足して次の週へスキップする」ということになる。

この際、if文中ではechoによる変数countの出力はしていない。

従って、出力結果は次のように2の倍数だけ出力されていないはずだ。

13579

breakとcontinue、どちらもしっかり覚えておきたいところ。

まとめ

今回も無事に学ぶことができましたねぇ。

繰り返し処理、ループ処理の1つとしてちゃんと使いこなしたいですが、繰り返し処理はfor文とやらもあるので、次はそのfor文とやらも学ばないといけませんね。

しかし、プログラミングとはこんなに面白いものだったのかと痛感しながら毎日学んでおります。笑

こんな楽しいものを知らずに生きてきたとは。。。

この楽しさを忘れずに学び続けていきたいと思います。

では、今回も最後までご覧頂きまして、ありがとうございました。

\今なら無料登録で600円分のポイントプレゼント/
今すぐ無料でドラマを1話から見る
※無料期間中に解約すれば料金は一切発生しません