【PHP】break文 - 反復処理・条件分岐処理の強制終了(for/foreach/while/do-while/switch)
反復処理や条件分岐処理を強制的に終了するbreak文があります。
break文はfor文やforeach文、while文など特定の構文の中で使用が可能です。
ここでは、break文について解説します。
検証環境
break文
break文は反復処理や条件分岐処理を強制終了します。
特定構文(for文、foreach文、while文、do-while文、switch文)の中で使用が可能で、break文が実行されると一番近いブロック(波括弧{}
)の処理を終了します。
基本構文
break;
構文はシンプルですが、特定構文の中でのみ利用でき、それ以外に記述するとエラーが発生します。
サンプル
break文が使用できるfor文、foreach文、while文、do-while文、switch文について、各サンプルを示します。
for文
<?php
for( $i = 0; $i < 10; $i++ ) {
echo $i."回目\n";
if( $i == 3 ) {
___ih_hl_start
break;
___ih_hl_end
}
}
?>
$ php sample1.php
0回目
1回目
2回目
3回目
3行目のfor文は初期化式、条件式、変化式から10回繰り返すように見えます。
しかし、4行目のif文によって$i
が3
の時にbreak
を実行し、for文を強制終了するため、繰り返し回数は4回となります。
foreach文
<?php
$fruits = [
'Apple',
'Orange',
'Grape',
'Melon',
];
foreach( $fruits as $data ) {
echo $data."\n";
if( $data == 'Grape' ) {
___ih_hl_start
break;
___ih_hl_end
}
}
?>
$ php sample2.php
Apple
Orange
Grape
10行目のforeach文は$fruits
から'Grape'
の値を取り出した回でbreak
を実行し終了します。
while文
<?php
while( true ) {
echo "Loop.\n";
___ih_hl_start
break;
___ih_hl_end
}
?>
$ php sample3.php
Loop.
while文の条件式はtrue
のため、無限ループになりますが、breakが必ず実行されるため、繰り返し処理の実行は1回のみです。
do-while文
<?php
do {
echo "Loop.\n";
___ih_hl_start
break;
___ih_hl_end
} while( true );
?>
$ php sample4.php
Loop.
while文のbreak
と同様に、条件式がtrueのため無限ループしそうですが、必ずbreak文が実行されるので、繰り返し処理の実行は1回のみです。
switch文
<?php
$data = 1;
switch( $data ) {
case 0:
echo "case0\n";
case 1:
echo "case1\n";
case 2:
echo "case2\n";
case 3:
echo "case3\n";
break;
case 4:
echo "case4\n";
default:
echo "default\n";
}
?>
$ php sample5.php
case1
case2
case3
case 1
から実行しますが、case 3
の最後にbreak
が実行されるため、以降のcase 4
とdefault
は実行されません。
演習問題
複数の数値の合計値を出力するプログラムを作成してください。
なお、下記条件を満たすものとします。
- 数値は標準入力で0が入力されるまでwhile文で繰り返し受け取る
- 0を受け取ったらbreak文でwhile文を中断する
$ php practice.php
--- please input ---
> 1
> 2
> 3
> 4
> 5
> 6
> 7
> 8
> 9
> 0
total : 45
$ php practice.php
--- please input ---
> 11
> 22
> 33
> 44
> 55
> 66
> 77
> 88
> 99
> 0
total : 495
次の実行例になるような複数商品の合計料金を出力するプログラムを作成してください。
なお、下記条件を満たすものとします。
- 商品の料金は『単価×個数』とする
- 商品名、単価、個数は標準入力で入力する
- 商品名、単価、個数のいずれかに空入力が入力された時点で、入力を終了する
※ 空入力 = 何も入力せずにEnterキーを押す
$ php practice.php
<<<< 商品入力 >>>>
商品名 > 炭酸水
単価 > 150
個数 > 2
商品名 > 弁当
単価 > 560
個数 > 2
商品名 > お菓子
単価 > 300
個数 > 7
商品名 >
<<<< 会計 >>>>
---- 合計料金 ----
3520
---- 明細 ----
商品名 : 炭酸水
単価 : 150
個数 : 2
.................
商品名 : 弁当
単価 : 560
個数 : 2
.................
商品名 : お菓子
単価 : 300
個数 : 7
.................
$ php practice.php
<<<< 商品入力 >>>>
商品名 > ローストビーフ
単価 > 1500
個数 > 2
商品名 > ワイン
単価 > 500
個数 > 4
商品名 > 牡蠣
単価 > 600
個数 >
<<<< 会計 >>>>
---- 合計料金 ----
5000
---- 明細 ----
商品名 : ローストビーフ
単価 : 1500
個数 : 2
.................
商品名 : ワイン
単価 : 500
個数 : 4
.................