多階層do-while文の複数の階層のループ処理をcontinueでスキップ

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

使い方

continue 階層数;

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

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

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

サンプル

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

↓↓↓出力結果↓↓↓

$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,
  $varB: 3
    $varC: 1,2,

スポンサード リンク

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