基礎

PHPのbreak文入門|ループを途中で抜ける方法

ループ処理を実行している途中で、特定の条件を満たしたらループを終了したい場合があります。PHPのbreak文を使うと、for文やwhile文などのループを途中で抜けることができます。

この記事では、break文の基本的な使い方から、ネストしたループでの活用方法まで詳しく解説します。

基本的な使い方

break文をループ内で実行すると、その時点でループが即座に終了します。

PHP
<?php
for ($i = 0; $i < 10; $i++) {
    if ($i === 5) {
        echo "5が見つかったのでループを終了します\n";
        break;
    }
    echo "$i\n";
}
echo "ループの後の処理\n";
?>
実行結果
0
1
2
3
4
5が見つかったのでループを終了します
ループの後の処理

$iが5になった時点でbreak文が実行され、forループが終了します。breakはループを抜けるだけで、プログラム全体を終了するわけではありません。

while文でのbreak

PHP
<?php
$names = ["田中", "鈴木", "佐藤", "山田", "中村"];
$target = "佐藤";
$found = false;

$i = 0;
while ($i < count($names)) {
    if ($names[$i] === $target) {
        $found = true;
        echo "「$target」が見つかりました(インデックス: $i)\n";
        break;
    }
    $i++;
}

if (!$found) {
    echo "「$target」は見つかりませんでした\n";
}
?>
実行結果
「佐藤」が見つかりました(インデックス: 2)

ネストしたループでのbreak

ループが入れ子(ネスト)になっている場合、break文に数値を指定することで、何段階のループを抜けるかを制御できます。

PHP
<?php
echo "--- break 1(デフォルト)---\n";
for ($i = 0; $i < 3; $i++) {
    for ($j = 0; $j < 3; $j++) {
        if ($j === 1) {
            break;
        }
        echo "i=$i, j=$j\n";
    }
}

echo "\n--- break 2 ---\n";
for ($i = 0; $i < 3; $i++) {
    for ($j = 0; $j < 3; $j++) {
        if ($i === 1 && $j === 1) {
            echo "i=1, j=1 でループ全体を終了\n";
            break 2;
        }
        echo "i=$i, j=$j\n";
    }
}
?>
実行結果
--- break 1(デフォルト)---
i=0, j=0
i=1, j=0
i=2, j=0

--- break 2 ---
i=0, j=0
i=0, j=1
i=0, j=2
i=1, j=0
i=1, j=1 でループ全体を終了

break 1は内側のループだけを抜け、break 2は2段階のループを一度に抜けます。

breakの数値引数

breakに続く数値は、抜けるループの段数を指定します。break(引数なし)は break 1 と同じです。break 3 なら3段階のループを一度に抜けます。

breakとreturnの違い

breakはループを抜けるだけですが、returnは関数全体の実行を終了します。関数内のループで使う場合は、どちらが適切か考えて使い分けましょう。

まとめ

  • break文はループを途中で終了させる制御文
  • for文、while文、do-while文、switch文で使用できる
  • breakの後、ループの外の処理が続行される
  • break 2 のように数値を指定して、ネストしたループを一度に抜けられる
  • 検索処理など「見つかったら終了」のパターンでよく使われる