本記事では、繰り返し処理(ループ文)の中断・スキップをする方法について解説しています。
ITエンジニア特化の転職サイト!
自社内開発求人に強い【クラウドリンク】
PHPの学習におすすめ参考書
気づけばプロ並みPHP 改訂版–ゼロから作れる人になる!
Contents
繰り返し処理の中断
繰り返し処理を中断をするには、中断したいポイントに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文の最初に戻っていることになります。