php break 循环

WBOY
WBOYoriginal
2016-06-20 12:43:101403parcourir

请高手给讲讲循环的区别,好吗?尤其是 b/c的区别,实在不明白
A
for($i = 1;$i for($j = 1;$j $m = $i * $i + $j * $j;
echo "$m\n
";
if($m  190) {
break 2;
}
}
}
?>// 2
B
for($i = 1;$i for($j = 1;$j $m = $i * $i + $j * $j;
echo "$m\n
";
if($m  190) {
break ;
}
}
}/ /2 5 10 17 26 37 50 65 82 101
104 109 116 125 136 149 164 181 200
C
for($i = 1;$i for($j = 1;$j $m = $i * $i + $j * $j;
echo "$m\n
";
}
// 2 5 10 17 26 37 50 65 82 101 
5 8 13 20 29 40 53 68 85 104 
10 13 18 25 34 45 58 73 90 109 
17 20 25 32 41 52 65 80 97 116
 26 29 34 41 50 61 74 89 106 125 
 37 40 45 52 61 72 85 100 117 136 
 50 53 58 65 74 85 98 113 130 149 
 65 68 73 80 89 100 113 128 145 164 
 82 85 90 97 106 117 130 145 162 181
 101 104 109 116 125 136 149 164 181 200


回复讨论(解决方案)

你的 C 应为

for($i = 1;$i <= 10; $i++ ){  for($j = 1;$j <= 10;$j++){    $m = $i * $i + $j * $j;    echo "$m  ";  }  echo '<br/>';}
2 5 10 17 26 37 50 65 82 101 5 8 13 20 29 40 53 68 85 104 10 13 18 25 34 45 58 73 90 109 17 20 25 32 41 52 65 80 97 116 26 29 34 41 50 61 74 89 106 125 37 40 45 52 61 72 85 100 117 136 50 53 58 65 74 85 98 113 130 149 65 68 73 80 89 100 113 128 145 164 82 85 90 97 106 117 130 145 162 181 101 104 109 116 125 136 149 164 181 200 
B 应为
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 ;    }  }  echo '<br/>';}
2 5 10 17 26 37 50 65 82 101 104 109 116 125 136 149 164 181 200 
即小于 90 的只打印第一列,break 跳出当前循环也就是跳出一重循环 
A 应为 
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 '<br/>';}
只打印一个 2
因为 break 2 是跳出 2 重循环

双重循环细解,从网上摘抄来,送给有同样疑惑的朋友
public static void main(String[] args)
 {
  for(int i=0①;i  {
   ④for(⑤int j=0;⑥j   {
    ⑧if(j        System.out.print(" ");
    ⑨if(j>=i)
     System.out.print("*");
   }
   ⑩System.out.println();
  }
 }
首先程序会执行①,给i初始化赋值0;然后判断i是不是小于等于5,如果小于等于5就执行④这个for循环。在这个for循环中,先会给变量j初始化赋值0,然后判断j是不是小于等于5,就执行⑧,因为i=j;所以会打印*,然后再执行⑦,把j++,这时j=1,然后执行⑥,判断j是不是小于或等于5,如果小于或等于5就执行⑨,因为j=1,i=0,j>i,所以会打印*,然后一直这样判断,当j=5时,因为它等于5,所以执行⑨,打印*,然后j++,这时j=6,j大于5了就跳出④这个for循环,执行它后面的那句打印换行的代码⑩,然后执行第一个for循环的③,i++,这时i=1,再执行②判断i是不是小于或等于5,如果小于或等于就执行第二个for循环④,然后就执行和上面一样的过程,直到i++=6,判断i大于5,这是程序结束。这里的要点就是①和⑤这样的赋值只会执行一次,其它的按判断结果执行。

在上面跳出2重循环的例子中:
for($i = 1;$i   for($j = 1;$j     $m = $i * $i + $j * $j;
    echo "$m  ";
    if($m  190) {
      break 2;
    }
  }
  echo '
';//
打印多少次呢?
}
换成下面的代码:
for($i = 1;$i   for($j = 1;$j     $m = $i * $i + $j * $j;
    echo "$m  ";
    if($m  190) {
      break 2;
    }
  }
  echo 'print times';//结果仍是 2
}
--所谓跳出 2 重循环,是跳出 第 2 重循环,还是跳出 总计 2  次循环, 跳出所有的循环呢?
请教高手

跳出第 2 重循环了,可第 1 重循环的  echo 'print times'; 是否还应该再继续执行呢?

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn