第16回: break と continue — ループを「スキップ」と「脱出」で制御する

章: 第1章: 文法の土台

ループの途中で「この要素は処理しなくていい」「条件を満たしたのでやめよう」——どう書きますか?

for・foreach・while のすべてのループで使える breakcontinue を知ると、ループ内の制御が柔軟になります。不要な処理をスキップしたり、条件を満たした時点でループを抜けたりできるようになり、パフォーマンスとコードの読みやすさが向上します。

まずコードを動かしてみる


<?php
for ($i = 1; $i <= 10; $i++) {
    if ($i === 3) continue;
    if ($i === 8) break;
    echo $i;
}

continue で3をスキップし、break で8の前にループを終了しています。出力は 124567 になります。

break と continue の使い分け

break continue
動作 ループを完全に終了する 現在の繰り返しをスキップして次へ
使う場面 目的の要素を見つけた・条件達成時に終了 特定の要素だけ処理をスキップしたい
switch文 caseを終了するためにも使う 使えない

悪い例(フラグ変数でループ終了を管理)


<?php
$found = false;
foreach ($items as $item) {
    if (!$found && $item['id'] === 5) {
        process($item);
        $found = true;
    }
}

良い例(breakで明確に終了)


<?php
foreach ($items as $item) {
    if ($item['id'] === 5) {
        process($item);
        break; // 見つかったのでループ終了
    }
}

チェックポイント: break 2continue 2 のように数値を指定すると、ネストしたループを外側まで制御できます。ただし読みにくくなるため、ネストが深い場合は関数分割を検討しましょう。

まとめ & 次のステップ

  • break はループを完全に終了し、continue は現在の繰り返しをスキップする
  • 目的のデータが見つかったら break で早期終了するとパフォーマンスが上がる
  • 条件に合わない要素を continue でスキップするとネストが浅くなり読みやすい
  • break 数値 continue 数値 でネストされた外側のループも制御できる
  • フラグ変数でループを制御するより break/continue のほうが意図が明確

次回は 配列(添字配列)を学びます。複数のデータをまとめて扱う、PHPの中核データ構造です。

Related Articles