本記事では、繰り返し処理(ループ文)の中断・スキップをする方法について解説しています。

- PHPの基本構文からクラス・データベース連携・セキュリティまで学べる
- PHPによるWebアプリ開発の基礎・基本テクニックを学べる


Amazon Kindle Unlimitedに登録すると、月額980円で読み放題だからオススメだよ!



初回30日間は無料だから、まだ登録したことのない人はぜひ試してみてね!
変数名/関数名にもう悩まない!


- 美しいコードが書けるが自然と書けるようになる
- 他の開発者が理解しやすいコードになる


繰り返し処理の中断
繰り返し処理を中断をするには、中断したいポイントにbreak;を記述します。
下記のサンプルコードでbreak;の挙動を確認してみましょう。
<?php
$num_arr = [100,200,300,400,500];
$total = 0;
foreach($num_arr as $num) {
$total += $num;
if($total > 700) {
break;
}
}
print_r($total); // -> 1000
?>
配列$num_arrの中には100〜500までの数値が100間隔で代入されています。これをforeach文でループさせ配列の中に代入されている数値を順に合算し変数$totalに結果を保存します。
配列$num_arrの中にある数値を全て合算すると合計値は1,500になりますが、処理が終了して変数$totalの値を確認すると1,000です。この理由はif文で変数$totalの値が700を超えたタイミングで処理を中断させるbreak;を設定していたからです。
これにより、100〜400までを合算した時に変数$totalの値が700を超えたため処理が中断され、最後の500が合算されずに処理が終了しました。
繰り返し処理のスキップ
繰り返し処理をスキップをするには、スキップしたいポイントにcontinue;を記述します。
下記のサンプルコードでcontinue;の挙動を確認してみましょう。
<?php
for($i = 1; $i <= 20; $i++){
if($i % 4 === 0){
continue;
}
print("${i}、"); // -> 1、2、3、5、6、7、9、10、11、13、14、15、17、18、19、
}
?>
上記のサンプルコードは、for文を使って20回繰り返し処理をさせています。for文の中で初期値の変数$iが4の倍数の時だけ、繰り返し処理をスキップするcontinue;を設定しています。
print()で1ループずつ変数$iの数値を出力しているので、確認してみると(4,8,12,16,20)が出力されていないことが分かります。これは4の倍数時にcontinue;が実行され後続処理のprint()がスキップされfor文の最初に戻っていることになります。