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
10for文の最初の式$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に質問、最後にクイズで理解度をチェックできます。

コメント