
【PHP】continue文 – 繰り返し処理のスキップ(for/foreach/while/do-while)
繰り返し処理で次の繰り返しにスキップするcontinue文とよ呼ばれる仕組みがあります。
continue文はfor文やforeach文、while文、do-while文で使うことができます。
ここではcontinue文について解説します。
なお、for / foreach / while / do-whileについては次の記事をご覧ください。
-
continue文
continue文とは
continue文は繰り返し処理で次の繰り返しにスキップするための仕組みです。
for文やforeach文、while文、do-while文のブロック(波括弧{}
)の中で使うことができます。
基本構文
continue文の基本構文は次のようになります。
continue;
プログラム実行時にcontinue
が実行されると、以降のブロックの処理を中断し、次の繰り返し処理を行います。
サンプルコード
サンプルコードでcontinue文の動作を確認していきましょう。
for文
<?php
for( $i = 0; $i < 3; $i++ ) {
echo $i."回目の繰り返し処理(前半)\n";
if( $i == 1 ) {
continue;
}
echo $i."回目の繰り返し処理(後半)\n";
}
?>
0回目の繰り返し処理(前半)
0回目の繰り返し処理(後半)
1回目の繰り返し処理(前半)
2回目の繰り返し処理(前半)
2回目の繰り返し処理(後半)
for文は$i
が0~2の間、繰り返し処理します。
1回の繰り返し処理で2回の出力(前半と後半)がありますが、$i
が1
の時はcontinue
が実行されるため、後半の出力はスキップされ実行されません。
実行結果からも後半の出力がないことが分かります。
foreach文
<?php
$fruits = [
'Apple',
'Orange',
'Grape',
'Melon',
];
foreach( $fruits as $data ) {
if( $data == 'Grape' ) {
continue;
}
echo "この果物は".$data."です。\n";
}
?>
この果物はAppleです。
この果物はOrangeです。
この果物はMelonです。
for文と同様に、continueが実行される繰り返し処理では、以降の処理が実行されず、次の繰り返し処理を実行していることが実行結果から分かります。
while文
<?php
$num = 1;
while( $num < 30 ) {
$num = $num * 2;
if( $num == 16 ) {
continue;
}
echo '$num = '.$num."\n";
}
?>
$num = 2
$num = 4
$num = 8
$num = 32
2の累乗が30以上になるまで算出と出力を行うプログラムです。
2の累乗の値は$num
に記憶されるようになっていますが、16のときcontinue
が実行されるため、以降の出力は実行されません。
do-while文
<?php
$num = 1;
do {
$num = $num * 2;
if( $num == 16 ) {
continue;
}
echo '$num = '.$num."\n";
} while( $num < 30 );
?>
$num = 2
$num = 4
$num = 8
$num = 32
こちらは上記、while文でのサンプルコードをdo-while文に書き換えたものになります。
while文と同様に$num
が16のときだけ出力が実行されていないことが実行結果から分かります。
演習問題
九九を出力するプログラムを作成してください。
なお、下記条件を満たすものとします。
- for文を使う。
- 4の数値を使う計算はスキップする
-- 1の段 --
1 × 1 = 1
1 × 2 = 2
1 × 3 = 3
1 × 5 = 5
1 × 6 = 6
1 × 7 = 7
1 × 8 = 8
1 × 9 = 9
-- 2の段 --
2 × 1 = 2
2 × 2 = 4
2 × 3 = 6
2 × 5 = 10
2 × 6 = 12
2 × 7 = 14
2 × 8 = 16
2 × 9 = 18
-- 3の段 --
3 × 1 = 3
3 × 2 = 6
3 × 3 = 9
3 × 5 = 15
3 × 6 = 18
3 × 7 = 21
3 × 8 = 24
3 × 9 = 27
-- 5の段 --
5 × 1 = 5
5 × 2 = 10
5 × 3 = 15
5 × 5 = 25
5 × 6 = 30
5 × 7 = 35
5 × 8 = 40
5 × 9 = 45
-- 6の段 --
6 × 1 = 6
6 × 2 = 12
6 × 3 = 18
6 × 5 = 30
6 × 6 = 36
6 × 7 = 42
6 × 8 = 48
6 × 9 = 54
-- 7の段 --
7 × 1 = 7
7 × 2 = 14
7 × 3 = 21
7 × 5 = 35
7 × 6 = 42
7 × 7 = 49
7 × 8 = 56
7 × 9 = 63
-- 8の段 --
8 × 1 = 8
8 × 2 = 16
8 × 3 = 24
8 × 5 = 40
8 × 6 = 48
8 × 7 = 56
8 × 8 = 64
8 × 9 = 72
-- 9の段 --
9 × 1 = 9
9 × 2 = 18
9 × 3 = 27
9 × 5 = 45
9 × 6 = 54
9 × 7 = 63
9 × 8 = 72
9 × 9 = 81
次の実行例になるような複数商品の合計料金を出力するプログラムを作成してください。
なお、下記条件を満たすものとします。
- 商品の料金は『単価×個数』とする
- 商品名、単価、個数は標準入力で入力する
- 商品名が空入力の場合、その商品入力をスキップする
※ 空入力 = 何も入力せずにEnterキーを押す - 単価、個数の入力値は整数型(interger)にキャストする
- 商品入力の最後に継続可否を入力し、Yの場合は次の商品入力処理、Nの場合は終了する
$ php practice.php
<<<< 商品入力 >>>>
商品名 > 炭酸水
単価 > 150
個数 > 2
続けますか?(Y/N)> Y
商品名 >
商品名 >
商品名 > 弁当
単価 > 560
個数 > 2
続けますか?(Y/N)> Y
商品名 > お菓子
単価 > 300
個数 > 7
続けますか?(Y/N)> N
<<<< 会計 >>>>
---- 合計料金 ----
3520
---- 明細 ----
商品名 : 炭酸水
単価 : 150
個数 : 2
.................
商品名 : 弁当
単価 : 560
個数 : 2
.................
商品名 : お菓子
単価 : 300
個数 : 7
.................
$ php practice.php
<<<< 商品入力 >>>>
商品名 > ローストビーフ
単価 > 1500
個数 > 2
続けますか?(Y/N)> y
続けますか?(Y/N)> x
続けますか?(Y/N)> a
続けますか?(Y/N)> Y
商品名 > ワイン
単価 > 500
個数 > 4
続けますか?(Y/N)> Y
商品名 > 牡蠣
単価 > 600
個数 > 8
続けますか?(Y/N)> n
続けますか?(Y/N)> x
続けますか?(Y/N)> N
<<<< 会計 >>>>
---- 合計料金 ----
9800
---- 明細 ----
商品名 : ローストビーフ
単価 : 1500
個数 : 2
.................
商品名 : ワイン
単価 : 500
個数 : 4
.................
商品名 : 牡蠣
単価 : 600
個数 : 8
.................
まとめ
continue文は繰り返し処理(for/foreach/while/do-while)で次の繰り返し処理にスキップする仕組みです。
プログラミングでは多々使うことがありますので、覚えていきましょう。