PHP

PHPで繰り返し処理(ループ)の中断・スキップする方法

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

PHPの学習におすすめ参考書
気づけばプロ並みPHP 改訂版–ゼロから作れる人になる!

本書情報
著者谷藤 賢一
発売日2017/3/6
ページ数331ページ
Kindle版
レビュー
(Amazon)
(168件)

参考書が苦手な人はUdemyの動画がおすすめ
ちゃんと学ぶ、PHP+MySQL(MariaDB)入門講座

動画情報
作成者たにぐち まこと
学習時間11時間
受講者数24,526人
レビュー (4,518件)
動画の詳細はこちら

繰り返し処理の中断

繰り返し処理を中断をするには、中断したいポイントに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文の最初に戻っていることになります。

ブログランキング・にほんブログ村へ PVアクセスランキング にほんブログ村