PHPで繰り返し(ループ)処理をするときの構文、for文とwhile文の解説をします。
for文の使い方
回数を指定して繰り返し処理をする場合は、for文を使います。
for文の書き方は次のとおりです。
for (初期値; 条件式; 増減式){
処理
}
具体的に書いてみます。
for ($i = 1; $i <= 10; $i++) {
echo $i . '<br>';
}
次のように出力されます。
1
2
3
4
5
6
7
8
9
10
for文の最初の式$i = 1
で、カウンタの初期値を1
に設定します。
2つめの式$i <= 10
は、条件式です。この条件がtrue
ならば繰り返しは続行します。
3つめの式$i++
は各繰り返しの後に評価(実行)されます。$i++
は$i
に1を足すという意味です。つまり、処理が繰り返されるたびに$i
の値は1つずつ増えていきます。
条件式がfalse
ならば繰り返しは終了します。この例では$i
が11
になったときに繰り返しが終了します。
while文の使い方
指定した条件を満たす限り繰り返し処理をする場合は、while文を使います。先に言っておきますが、while文は使わないので覚えなくてOKです(暴言)。
while文の書き方は次のとおりです。
while (条件式){
処理
}
具体的に書いてみます。
下記は、配列$members
に格納された会員情報を出力するコードです。$members
には何件の会員情報が入っているのかわからないので、回数を指定して繰り返し処理をすることができません。
$members[0] = array('name' => 'カイザー・ヴァッテンバハ', 'age' => 26);
$members[1] = array('name' => 'マルテ・ゾンバルト', 'age' => 32);
$members[2] = array('name' => 'ヴェンデル・ギーレン', 'age' => 72);
$members[3] = array('name' => 'アレクシス・ゲーアマン', 'age' => 19);
$members[4] = array('name' => 'ジーモン・テーリヒェン', 'age' => 50);
$i = 0;
while (isset($members[$i])) {
echo $members[$i]['name'] . '<br>';
$i++;
}
次のように出力されます。
カイザー・ヴァッテンバハ
マルテ・ゾンバルト
ヴェンデル・ギーレン
アレクシス・ゲーアマン
ジーモン・テーリヒェン
条件式はisset($members[$i])
です。isset
関数は変数がセットされているかを調べます。$members[0]
, $members[1]
..と処理が繰り返されていき、$members[5]
になったところで、false
が返されるので繰り返しが終了します。
無料で利用できるプログラミング学習サービスをお探しならば Code Lesson はいかがでしょうか。プロのエンジニアが監修した学習ロードマップで効率的に学習、AIに質問、最後にクイズで理解度をチェックできます。
breakとcontinue
for文やwhile文で、繰り返し処理を中断したりスキップするにはbreak
とcontinue
を使います。if
と一緒に使われることが多いです。
break
繰り返し処理を中断するにはbreak
を使います。
for ($i = 1; $i <= 10; $i++) {
if ($i == 5) {
break;
}
echo $i . '<br>';
}
次のように出力されます。
1
2
3
4
$i
が5
になったときに処理が中断され、それ以降の繰り返しは行われません。
continue
繰り返し処理をスキップするにはcontinue
を使います。
for ($i = 1; $i <= 10; $i++) {
if ($i == 5) {
continue;
}
echo $i . '<br>';
}
次のように出力されます。
1
2
3
4
6
7
8
9
10
$i
が5
のときだけ処理が実行されず、それ以降はまた繰り返し処理が再開されます。
for文とwhile文の違いと使い分け
for文とwhile文の違いは次のとおりです。
for | 回数を指定して繰り返す。 |
while | 条件を指定して繰り返す。 |
ただし、書き方次第でfor文でwhile文っぽいこともできるし、while文でfor文っぽいこともできるんです。
例えばこんな感じ。
//for文で10回繰り返し
for ($i = 1; $i <= 10; $i++) {
echo $i . '<br>';
}
//while文で10回繰り返し
$i = 1;
while ($i <= 10) {
echo $i . '<br>';
$i++;
}
$members[0] = array('name' => 'カイザー・ヴァッテンバハ', 'age' => 26);
$members[1] = array('name' => 'マルテ・ゾンバルト', 'age' => 32);
$members[2] = array('name' => 'ヴェンデル・ギーレン', 'age' => 72);
$members[3] = array('name' => 'アレクシス・ゲーアマン', 'age' => 19);
$members[4] = array('name' => 'ジーモン・テーリヒェン', 'age' => 50);
//for文で配列の値をすべて出力
for ($i = 0; isset($members[$i]); $i++) {
echo $members[$i]['name'] . '<br>';
}
//while文で配列の値をすべて出力
$i = 0;
while (isset($members[$i])) {
echo $members[$i]['name'] . '<br>';
$i++;
}
というわけで、ケースバイケースで使い分けてもいいし、for文またはwhile文のどちらかだけを使うという俺様ルールを制定してもいいと思います。
ちなみに私はfor文しか使わない主義人民共和国です。for文のほうが「初期値」「条件式」「増減式」が1ヶ所にまとまっていてわかりやすいですよね。while文でこれらの設定を間違えると無限ループに陥って大変なことになります。試しにやってみてください。
$i = 1;
while ($i <= 10) {
echo $i . '<br>';
//$i++; ←これを忘れると無限ループ
}
for文とwhile文、速度はどっちが速いの?って思った方もいるでしょう。私、実験しました。ほぼ同じです。安心してfor文を使いましょう。
でわでわ
無料で利用できるプログラミング学習サービスをお探しならば Code Lesson はいかがでしょうか。プロのエンジニアが監修した学習ロードマップで効率的に学習、AIに質問、最後にクイズで理解度をチェックできます。
コメント