入れ子(ネスト)で多階層にしたwhile文において、複数の階層のループ(繰り返し)処理をスキップさせたいときは、continueの引数に、スキップさせたい階層数を指定することができる。
使い方
continue 階層数;
階層数は、現在の階層から数える。
例えば、現在の階層の1つ上の階層までのループ(繰り返し)処理をスキップさせたい場合は、2階層分になるので、「2」を指定する。
while ( 条件式A ) {
条件式Aが「TRUE」の間、繰り返し行う処理
while ( 条件式B ) {
条件式Bが「TRUE」の間、繰り返し行う処理
while ( 条件式C ) {
条件式Cが「TRUE」の間、繰り返し行う処理
continue 2; // 条件式Bの階層までのループ(繰り返し)処理をスキップさせ、条件式Bの次のループ(繰り返し)処理へ移る
}
}
}
条件式Aが「TRUE」の間、繰り返し行う処理
while ( 条件式B ) {
条件式Bが「TRUE」の間、繰り返し行う処理
while ( 条件式C ) {
条件式Cが「TRUE」の間、繰り返し行う処理
continue 2; // 条件式Bの階層までのループ(繰り返し)処理をスキップさせ、条件式Bの次のループ(繰り返し)処理へ移る
}
}
}
引数を指定しない場合は、現在の階層のループ(繰り返し)処理だけをスキップさせる。
サンプル
<?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>';
continue 2;
}
}
echo '</p>';
}
}
?>
$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>';
continue 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,
$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,