2015年10月19日

PHP forとwhileの違いと使い分け

«
»

Pocket

これまで、for文とwhile文について書いてきました。
どちらも繰返しを表す構文で、基本的にはどちらを使っても
同じような処理を行えることがわかって頂けたと思います。
 
ここで、どのように使い分けたらいいのか?という疑問が湧くと
思います。
 
正直、明確な使い分け方は無いと思うのですが、ここでは
わかりやすく(デフォルメして)書いていきたいと思います。

forとwhileの使い分け

php for while 使い分け
 
上図に書いたとおり、forとwhileの使い分けの一番大きな判断軸は
繰り返す回数があらかじめわかっているかどうか
ということになります。
 

・繰り返す回数があらかじめわかっている ⇒ for
・繰り返す回数があらかじめわからない ⇒ while

少しわかりづらいと思いますので、具体的な例を挙げてみましょう。

カレーの煮込み時間で考えるforとwhileの違い

php whie for 繰返し
 
例えば、あなたは今、レシピを見ながらカレーを作っているとしましょう。
煮込み時間についてこのように記述されていたとしましょう。
「30分間煮込んで下さい」
 
これは30分間と繰り返す(≒待ち時間)があらかじめ決まっていますのでfor文
(の方が良さそう、ぐらいです)となります。
 


<?php

for($i = 0; $i < 30; $i++){ //30分待つ
	//待つ
}
echo "出来上がり!";

 
プログラムにするとこんなイメージになります。
 
一方、レシピがこんな風に書いてあったとします。
「串をにんじんに刺してスッと入ったら大丈夫です」
これは先程と違って明確な時間がわかりません
にんじんの切り方とかによって変わってきそうです。
 


<?php

while(true){ //無限に繰り返せ
	if(串をにんじんに刺してスッと入ったら){
		break; //繰返しの強制終了
	}
	//待つ
}

 
プログラムにするとこんなイメージになります。
 
while(true)や、breakについては次回に書きますが、
無限に待つ前提で、串をにんじんに刺してスッと入ったら
火を止める
ようなイメージです。
 
このように時間や回数がわからず、特定のタイミングで
終了するような場合はwhileを使う方がよいと思います。

まとめ

料理の煮込み時間を例としてforとwhileの使い分けについて
書いてきましたが、いかがでしたでしょうか。
 

・繰り返す回数があらかじめわかっている ⇒ for
・繰り返す回数があらかじめわからない ⇒ while

【関連する記事】