for($i = 1;$i <= 10; $i++ ){
echo 'print times';//結果是 print times 重複 10 次
}
for($i = 1;$i <= 10; $i++ ){
for($j = 1;$j <= 10;$j++){
$m = $i * $i + $j * $j;
echo "$m ";
if($m < 90 || $m > 190) {
break 2;
}
echo 'print times';//結果是 2 ,跳出 第 2 層迴圈後,為什麼第 1 層迴圈的中列印句沒有執行呢?
}
回複討論(解決方案)
for($i = 1;$i <= 10; $i++ ){ for($j = 1;$j <= 10;$j++){ $m = $i * $i + $j * $j; echo "$m "; if($m < 90 || $m > 190) { break 2; //跳出2層迴圈,也就是跳到 第1層迴圈結束 } } //這是第2層迴圈結束 echo 'print times';} //這是第1層迴圈結束break 2; 中的 2 是量詞,是2層迴圈的意思。不是數詞,即不是第2層的意思
同樣的例子:
//設定編碼為UTF-8,以避免中文亂碼
header('Content-Type:text/html;charset=utf-8');
//執行嵌套迴圈,外層迴圈3次,內層迴圈2次。當執行到第2次外層迴圈時,使用break 2跳出,直接跳出2層迴圈
for ($i = 0; $i < 3; $i++){
echo '外層迴圈'.$i.' 開始
';
for ($j = 0; $j < 2; $j++){
if ($i == 1){
break 2; //使用break 2直接跳出2層迴圈
}
echo '內層迴圈'.$i.'-'.$j.'
';
}
echo '外層迴圈'.$i.' 結束
';
}
?>
結果:
外層迴圈0 開始
內層迴圈0-0
內層迴圈0-1
外層迴圈0 結束
外層迴圈1 開始