PHPのbreakステートメントとは?ループとswitchを抜ける方法を実例で解説
はじめに
breakステートメントは、PHPにおけるループ制御のためのキーワードのひとつです。while、do-while、for、foreachといったループ処理やswitch文の中でプログラムの流れがbreakに到達すると、そのループ(またはswitchブロック)内の残りの処理はすべてスキップされ、ループの直後にある処理へと実行が移ります。
基本構文
while (expr)
{
..
..
if (expr1)
break;
..
..
}次の例では、ユーザーが「END」という文字列を入力するまで、whileループが標準入力からの読み込みを続けます。「END」が入力された時点でbreakが実行され、ループが終了します。
サンプルコード
<?php
while (TRUE){
$var=readline("enter something (END to stop loop)");
if ($var=="END")
break;
echo "You entered $var\n";
}
?>出力結果
このコードを実行すると、次のような結果が出力されます。
enter something (END to stop loop)Hello You entered Hello enter something (END to stop loop)PHP You entered PHP enter something (END to stop loop)END
なお、breakには省略可能な数値引数を指定できます。この数値は「いくつの入れ子構造を抜けるか」を表しており、デフォルトは1です。
ネストされたループでのbreakの動作
入れ子(ネスト)になったループの中でbreakを使うと、breakは現在のループ、つまり内側のループだけを抜けます。次の例では、内側のforループの中でbreakを使用しています。
サンプルコード
<?php
for ($i = 1;$i<=5;$i++) {
echo "Start Of outer loop\n";
for ($j=1;$j<=5;$j++) {
if ($j >=3) break ;
echo "I : $i J : $j"."\n";
}
echo "End of inner loop\n";
}
?>出力結果
このコードを実行すると、次のような結果が出力されます。
Start Of outer loop I : 1 J : 1 I : 1 J : 2 End of inner loop Start Of outer loop I : 2 J : 1 I : 2 J : 2 End of inner loop Start Of outer loop I : 3 J : 1 I : 3 J : 2 End of inner loop Start Of outer loop I : 4 J : 1 I : 4 J : 2 End of inner loop Start Of outer loop I : 5 J : 1 I : 5 J : 2 End of inner loop
$jが3以上になった時点で内側のループがbreakされ、一方で外側のループは最後まで5回繰り返されている点に注目してください。これは、breakが内側のループにしか影響しないことを示す好例です。
break 2で複数の階層を抜ける
breakは数値引数を受け取ることができ、いくつの外側の構造をまとめて抜けるかを指定できます。次の例では、内側のループ内の「break 2」によって、内側のループだけでなく外側のループも同時に終了させています。
サンプルコード
<?php
for ($i = 1;$i<=5;$i++) {
echo "Start Of outer loop\n";
for ($j=1;$j<=5;$j++) {
if ($j >3) break 2 ;
echo "I : $i J : $j"."\n";
}
echo "End of inner loop\n";
}
?>出力結果
このコードを実行すると、次のような結果が出力されます。
I : 1 J : 1 I : 1 J : 2 I : 1 J : 3
$jが4になった時点で「break 2」が実行され、内側と外側の両方のループが一気に終了するため、それ以降の出力は一切ありません。
switch文でのbreak
switch文においてbreakは、マッチしたcaseの処理を実行した後、それ以降のcaseへ処理が流れ落ちる(フォールスルー)ことを防ぐ役割を果たします。次の例では、入力された番号に応じて25の平方根または平方を計算しています。
サンプルコード
<?php
$x=25;
$var=(int)readline("1を入力すると平方根、2を入力すると平方を計算します: ");
switch($var){
case 1:echo sqrt($x). "\n";
break;
case 2:echo pow($x, $var) . "\n";
}
?>出力結果
このコードを実行すると、次のような結果が出力されます。
1を入力すると平方根、2を入力すると平方を計算します: 2 625 1を入力すると平方根、2を入力すると平方を計算します: 1 5
case 1ではsqrt()関数によって√25=5が、case 2ではpow()関数によって25の2乗=625が計算されます。各caseの末尾にbreakを置くことで、意図しないcaseへのフォールスルーを確実に防いでいます。
まとめ
breakステートメントは、ループやswitch文の実行を途中で終了させるための重要な制御構造です。ポイントを整理すると以下の通りです。
- while、do-while、for、foreach、switchのいずれの中でも使用できる
- デフォルトでは、breakが書かれた最も内側の構造のみを抜ける
- 「break 2」のように数値引数を指定すると、指定した階層分まとめて抜けられる
- switch文では、フォールスルーを防ぐために各caseの末尾で使うのが一般的
-
C#のwhileループでbreakステートメントを使う方法を解説
C#におけるbreakステートメントは、ループを即座に終了させ、実行をループ直後の次のステートメントへ移すための制御構文です。ループ内でbreakステートメントが実行されると、その時点でループは強制的に中断され、プログラムの制御はループの後に続く処理へと移ります。条件に関係なく途中でループを抜けたい場合に非常に便利です。breakステートメントの基本的な使い方ここでは、whileループの中でbreakステートメントを使う具体的な例を見ていきましょう。以下のコードスニペットでは、特定の条件を満たしたときにbreakによってループを終了させています。if (a > 15) { bre
-
Pythonのif文内でbreakステートメントは使える?使い方と注意点を解説
PythonのbreakステートメントとはPythonのbreakキーワードは、ループの流れを制御するための重要なステートメントです。breakが実行されると、その時点で残りの反復処理(イテレーション)はすべて中断され、プログラムの制御はループの直後にある次の文へと移ります。実際のコードでは、breakはほぼ必ず条件分岐であるifブロックの中に記述されます。つまり、「ある条件を満たした場合にのみループを抜ける」という形で使われるのが一般的です。whileループ内でのbreakの基本構文while expr == True: stmt1 &