多階層while文の複数の階層のループ処理をbreakで終了させる

入れ子(ネスト)で多階層にしたwhile文において、複数の階層のループ(繰り返し)処理を終了させたいときは、breakの引数に、終了させたい階層数を指定することができる。

使い方

break 階層数;

階層数は、現在の階層から数える。

例えば、現在の階層の1つ上の階層までのループ(繰り返し)処理を終了させたい場合は、2階層分になるので、「2」を指定する。

while ( 条件式A ) {
    条件式Aが「TRUE」の間、繰り返し行う処理
    while ( 条件式B ) {
        条件式Bが「TRUE」の間、繰り返し行う処理
        while ( 条件式C ) {
            条件式Cが「TRUE」の間、繰り返し行う処理
            break 2; // 条件式Bの階層までのループ(繰り返し)処理を終了させ、条件式Aの次のループ(繰り返し)処理へ移る
        }
    }
}

引数を指定しない場合は、現在の階層のループ(繰り返し)処理だけを終了させる。

サンプル

<?php
$varA = 1;
while ( $varA <= 3 ) {
    echo '<p>$varA: ';
    echo $varA++;
    echo '</p>';
    $varB = 1;
    while ( $varB < $varA ) {
        echo '<p>  $varB: ';
        echo $varB++;
        echo '</p>';
        echo '<p>    $varC: ';
        $varC = 1;
        while ( $varC < $varB ) {
            echo $varC++ . ',';
            if ( $varC > 2 ) {
                echo '</p>';
                break 2;
            }
        }
        echo '</p>';
    }
}
?>

↓↓↓出力結果↓↓↓

$varA: 1
  $varB: 1
    $varC: 1,
$varA: 2
  $varB: 1
    $varC: 1,
  $varB: 2
    $varC: 1,2,
$varA: 3
  $varB: 1
    $varC: 1,
  $varB: 2
    $varC: 1,2,

スポンサード リンク

カテゴリー: PHP, while, 制御構造 タグ: パーマリンク