ループ処理を実行している途中で、特定の条件を満たしたらループを終了したい場合があります。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 のように数値を指定して、ネストしたループを一度に抜けられる
- 検索処理など「見つかったら終了」のパターンでよく使われる