有人可以通过示例解释PHP中循环break 2
或continue 2
的含义吗?当break
或continue
后跟数字时,这意味着什么?
答案 0 :(得分:85)
$array = array(1,2,3);
foreach ($array as $item){
if ($item == 2) {
break;
}
echo $item;
}
输出“1”,因为在echo能够打印“2”之前,循环已断开。
$array = array(1,2,3);
foreach ($array as $item){
if ($item == 2) {
continue;
}
echo $item;
}
输出13
,因为第二次迭代是传递
$numbers = array(1,2,3);
$letters = array("A","B","C");
foreach ($numbers as $num){
foreach ($letters as $char){
if ($char == "C") {
break 2; // if this was break, o/p will be AB1AB2AB3
}
echo $char;
}
echo $num;
}
由于AB
,输出break 2
,这意味着两个陈述都很早就被打破了。如果这只是break
,则输出为AB1AB2AB3
。
$numbers = array(1,2,3);
$letters = array("A","B","C");
foreach ($numbers as $num){
foreach ($letters as $char){
if ($char == "C") {
continue 2;
}
echo $char;
}
echo $num;
}
由于ABABAB
,将输出continue 2
:每次都会传递外部循环。
换句话说,continue
会停止当前的迭代执行但会让另一个迭代执行,而break
会完全停止整个语句。
我们可以认为continue
仅适用于循环,而break
可用于其他语句,例如switch
。
数字表示受影响的嵌套语句的数量
如果有2个嵌套循环,则内部循环中的break
会破坏内部循环(但是由于内循环将在外循环的下一次迭代中再次启动,因此它没有多大意义)。内循环中的break 2
将破坏它们。
答案 1 :(得分:32)
这个数字只是说“跳出多少范围”
<?php
for($i = 0; $i < 10; ++$i) {
for($j = 0; $j < 10; ++$j) {
break 2;
}
}
$ i和$ j将为0
continue接受一个可选的数字参数,该参数告诉它应跳过多少级别的封闭循环到结尾。
同样适用于休息。
答案 2 :(得分:9)
break 接受一个可选的数字参数,该参数告诉它有多少嵌套的封闭结构被打破。
<?php
$arr = array('one', 'two', 'three', 'four', 'stop', 'five');
while (list(, $val) = each($arr)) {
if ($val == 'stop') {
break; /* You could also write 'break 1;' here. */
}
echo "$val<br />\n";
}
/* Using the optional argument. */
$i = 0;
while (++$i) {
switch ($i) {
case 5:
echo "At 5<br />\n";
break 1; /* Exit only the switch. */
case 10:
echo "At 10; quitting<br />\n";
break 2; /* Exit the switch and the while. */
default:
break;
}
}
?>
继续接受一个可选的数字参数,该参数告诉它应跳过多少级别的封闭循环到结尾。默认值为1,因此跳到当前循环的末尾。
<?php
while (list($key, $value) = each($arr)) {
if (!($key % 2)) { // skip odd members
continue;
}
do_something_odd($value);
}
$i = 0;
while ($i++ < 5) {
echo "Outer<br />\n";
while (1) {
echo "Middle<br />\n";
while (1) {
echo "Inner<br />\n";
continue 3;
}
echo "This never gets output.<br />\n";
}
echo "Neither does this.<br />\n";
}
?>
答案 3 :(得分:3)
break:打破最内层循环(退出循环)
中断2:打破2个嵌套级别循环(从2个嵌套循环中退出)
continue:强制循环以进行下一次迭代,而不执行其余的循环代码
继续2:强制循环进行下一次迭代,使用它而不执行其余的循环代码
当我们遇到$array
值为5 时,退出循环
break
$array(4,5,8);
for ($i=0 ;$i < 10 $i ++)
{
if ($array[$i]==5)
{
break;
}
}
break(n)
当我们在$ array中遇到值5时退出两个循环;
for ($i=0 ;$i < 10 $i ++)
{
for($j=0; $j <10; $j++)
{
if ($array[$i][$j]==5)
{
break 2;
}
}
}
继续
当值为5时将打印消息;
for($i=0; $i<10; $i++)
{
if ($array[$i] != 5)
{
continue;// will reach at the first line from here which is for($i=0;.....
}
echo 'This is five';
}
}