break / continue
テクノロジ系 / loop (for / while / break / continue)
break / continue
Lesson 3 / Chapter 4
「途中でやめたい」「この回だけスキップしたい」
普通のループは条件が偽になるまで全部回る。
でも実際は途中で抜けたい場面がある。
- 探していた値が見つかった → もう続ける必要がない →
break - 偶数だけスキップして奇数だけ処理したい →
continue
break でループを抜ける
<?php
for ($i = 1; $i <= 10; $i++) {
if ($i === 5) {
break;
}
echo $i . "\n";
}実行結果:
1 2 3 4
break;を実行した瞬間、そのループから出る- ループの後ろの処理に進む
continue で次の反復にスキップ
<?php
for ($i = 1; $i <= 5; $i++) {
if ($i === 3) {
continue;
}
echo $i . "\n";
}実行結果:
1 2 4 5
continue;を実行すると 今の反復だけスキップ- ループ自体は次の値で続く
break と continue の違い
| break | continue | |
|---|---|---|
| 動き | ループから完全に抜ける | 今の反復だけ飛ばす |
| ループ後 | ループの後ろに進む | 次の $i で続行 |
| 使い所 | 条件を満たしたら終わり | この値だけスキップ |
// break: 5 で終了
for ($i = 1; $i <= 10; $i++) {
if ($i === 5) break;
echo $i; // 1234
}
// continue: 5 だけ飛ばして続行
for ($i = 1; $i <= 10; $i++) {
if ($i === 5) continue;
echo $i; // 12346789(10)
}よくある使い方: 探索して見つけたら終わる
<?php
$numbers = [3, 8, 15, 22, 9];
foreach ($numbers as $n) {
if ($n > 10) {
echo "見つかった: $n\n";
break;
}
}実行結果:
見つかった: 15
- 10 より大きい値を探している
- 最初に見つかった
15で出力して すぐ抜ける - それ以降 (22, 9) は調べない
このチャプターでできるようになること
✅ break でループを途中で抜けられる
✅ continue で今の反復だけスキップできる
✅ 2 つの違いを言える
✅ 条件と組み合わせて「ある値で終わる / スキップする」を書ける
→ ドリルへ
考えてみよう
既定では正解・不正解の判定はしません。自分のペースで「答えを見る」を。採点してほしい場合だけ「採点してほしい」を押してください。
ドリル 01 — 5 で break
問題
1 から 10 までの for ループで、$i が 5 になったら break でループを抜けてください。
ループの中では (break の前に) $i の値を 1 行ずつ出力します。
期待される出力:
1 2 3 4
採点
php scripts/grade.php topics/loop/ch04-break-continue/drill/01-break-at-5/
ヒント
for ($i = 1; $i <= 10; $i++)でループするif ($i === 5) { break; }を echo の前に 置く- そうすると
5を出力する前にループを抜けるので、1〜4 が出る
ドリル 02 — 偶数をスキップ
問題
1 から 10 までの for ループで、$i が 偶数 なら continue で出力をスキップし、奇数だけを 1 行ずつ出力してください。
期待される出力:
1 3 5 7 9
採点
php scripts/grade.php topics/loop/ch04-break-continue/drill/02-skip-even/
ヒント
- 偶数判定は
$i % 2 === 0 if ($i % 2 === 0) { continue; }を echo の前に置く- 残った奇数だけ
echo $i . "\n";で出力
ドリル 03 — 最初に 100 を超えた値を見つける
問題
標準入力から整数を 1 行ずつ何度も読み、最初に 100 を超えた値 が出てきたら、その値を出力してループを抜けてください。
入力の終端 (EOF) まで 100 を超える値が無かった場合は何も出力しなくてよい (今回のテストでは必ず 100 を超える値が含まれる)。
入力例:
12 50 99 123 77
期待される出力:
123
採点
php scripts/grade.php topics/loop/ch04-break-continue/drill/03-find-input/
ヒント
while (($line = fgets(STDIN)) !== false)で EOF まで読める- 各行を
$n = (int) trim($line);で数値化 if ($n > 100) { echo $n . "\n"; break; }で出力 + 抜ける