入れ子(ネスト)で多階層にした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 );
条件式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;
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,
$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,