プログラミング言語PHPのwhile文について、Web開発経験のある筆者が初心者向けに丁寧に解説します。
見やすい図を使いながら、PHP while文について解説しています。
本記事を読めば、PHP while文の書き方・使い方、breakとcontinueの違い、無限ループについて理解できるでしょう。
ぜひ最後まで読んで、PHP while文の基本を理解してください!
公開日:2017年6月5日
INDEX
PHP while文の書き方
while文では、条件式を書くだけでループ処理ができます。構文は以下の通りです。
1 2 3 |
while(条件式){ //処理する文 } |
while文では、条件式を評価し結果が正しい場合(true)にはwhile内の処理を実行します。
そして、再度条件式の評価を行い結果が正しい場合(true)はwhile内の処理を繰り返します。
もし、評価結果が誤り(false)の場合にwhile文を抜け、次の処理を行います。
では、次の項で実際にwhile文を使ってみましょう。
\文字より動画で学びたいあなたへ/
Udemyで講座を探す >PHP while文を実際に使ってみよう
サンプルソース1は、whileを使ってカウンタの値を繰り返し出力する例です。
1 2 3 4 5 6 |
//サンプルソースコード1 $count = 0;//変数countを0で初期化 while($count<=5){ //条件式 変数が5よりも小さいことを確認する echo $count."<br>"; //変数countの中身を出力し、改行処理 $count++;//変数countのインクリメント処理 } |
1 2 3 4 5 6 7 |
//サンプルソースコード1の実行結果 0 1 2 3 4 5 |
①:変数countを「0」で初期化する。
②:while文の条件式:$countが5以下のときは、繰り返し処理を実行。
③:処理を実行:$countの値を出力する。
④:$countの値を1足す
⑤:②のwhile文の条件式処理へ移動。条件式がtrueのときはループを続行、falseのときはループを中断する。
PHP while文におけるbreak
while文のループ中で,特定の条件になったら処理を中断したい場合には「break」文を実行しましょう。
break文を使うことでwhileのループ処理から抜けることができます。
構文は以下の通りです。
1 2 3 4 |
while(条件式){ //繰り返し行う処理 break; //現在のループ処理を終了し、whileの処理から抜ける。 } |
それでは、簡単なbreakを使う例を見てみましょう。
1 2 3 4 5 6 7 8 9 |
//サンプルソースコード2 $count = 0;//変数countを0で初期化する while($count<=5){//変数countが5より小さい時は、while内のループ処理を実施する if($count>3){//変数countが3より大きい時に実施する。 break;//while文を強制終了する。 } echo $count."<br>";//変数countの中身を出力する $count++;//変数countに1を足す } |
1 2 3 4 5 |
//サンプルソースコード2の実行結果 0 1 2 3 |
サンプルソースコード1のwhile文では変数を0〜5を出力するプログラムでした。
今回のサンプルソースコード2では、if条件により変数のcountが3より大き良いときは、breakによってwhileの繰り返し処理を終了する処理が追加されています。
実際に出力結果をみると3からあとの数字は出力されていないことがわかります。
PHP while文におけるcontinue
先程のbreakではwhile文のループ自体を強制終了しました。もし、ある周回のループでの処理をスキップしたいような処理を実現したい場合はcontinueを使用します。
構文は以下の通りです。
1 2 3 4 5 |
while(条件式){ //繰り返し行う処理1 continue; //以降の処理をスキップして、次のループ処理を行う。 //繰り返し行う処理2 } |
では、サンプルソースコード3を見てみましょう。
変数のcountの値0〜5を出力するプログラムですが、変数countが3の時はその周回をスキップしたいです。
1 2 3 4 5 6 7 8 |
//サンプルソースコード3 $count = 0;//変数countを0で初期化する。 while($count++<5){//変数countに1を足す。countの値が5より小さい時は処理を繰り返す。 if($count==3){//変数countが3のときに実施される continue;//以降の処理をスキップする。 } echo $count."<br>";//変数countの値を出力する } |
1 2 3 4 5 |
//サンプルソースコード3の実行結果 1 2 4 5 |
continueが実行されるとcontinueと記載した以降の処理がスキップされ、次の周回処理に移ります。
実行結果をみると実際に3の場合スキップされておりは出力されていませんが、while文のループが継続的におこなわれているため,4〜5が出力されていることがわかります。
PHP while文の無限ループについて
プログラムが終了しないように記載したループを「無限ループ」と呼びます。while文で無限ループを実現するには下記のように記載します。
1 2 3 4 5 6 |
while(1){ //無限に繰り返す処理を記載 } while(true){ //無限に繰り返す処理を記載 } |
条件式の値を常に成立を意味する1またはtrueと記載することで、半永久的にループが実施されます。
但し、処理が終わらないプログラムはPCへ負担をかけ続けることになります。
最終的にはプログラムがクラッシュする可能性もあります。
通常はこのような無限ループ処理は意図して書くというよりも、記載ミスで無限ループとなってしまうケースが多いです。例えば、下記のようなケースです。
1 2 3 4 5 6 |
//サンプルソースコード4 $count = 0; while($count<10){ echo $count."<br>"; //<-----------------$count++;を記載し忘れたケース。 } |
1 2 3 4 5 6 7 8 |
//サンプルソースコード4の実行結果 0 0 0 0 0 0 //0...の繰り返しがずっと続く |
サンプルソースコード4は、サンプルソースコード1中のインクリメント処理$count++;を記載し忘れた場合を想定しています。実行結果をみるとそれによって無限ループが発生していることがわかります。
この様に、while文を書くときは処理が意図していない無限ループにならないように気をつけましょう。
いかがでしたか?PHP while文の基礎が理解できましたか?
PHPからLaravelまで サーバーサイドをとことんやってみよう【初心者から脱初心者へ】【わかりやすさ最重視】
PHP初歩からLaravelまでをつなぐように知識を網羅しています。連想配列や関数からフォーム(HTTP)/セキュリティ/PDO/クラスなど。composer/名前空間などを使った現代的な開発方法を体験することができます。
\無料でプレビューをチェック!/
講座を見てみる評価:★★★★★
PHPの基礎からLaravelの概要まで学べて良かったです。Laravelはいろんな機能があり、どこを触るのか大変でしたが、学習は続けていき、この講座も見直しに来ると思います。Laravel第2弾以降も受講しますので、今後が楽しみです!
評価:★★★★★
ララベルの学習にあたっていろいろなサイトや動画や見漁ったのですが、このUdemy講座が一番わかりやすかったです!!!
最新情報・キャンペーン情報発信中