在 PHP 中,“中断”或“继续”后面的数字是什么意思?

2022-08-30 10:02:06

有人可以用例子来解释一下循环或PHP的含义吗?当 或 后跟一个数字时,它是什么意思?break 2continue 2breakcontinue


答案 1
$array = array(1,2,3);
foreach ($array as $item){
  if ($item == 2) {
    break;
  }
  echo $item;
}

输出“1”,因为在回声能够打印“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;
}

输出,因为 ,这意味着两个语句都很早就被破坏了。如果这只是,输出将是 。ABbreak 2breakAB1AB2AB3

$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;
}

将输出,因为:外层循环每次都会被传递。ABABABcontinue 2

换句话说,停止当前迭代执行,但让另一个迭代运行,同时完全停止整个语句。
因此,我们可以将其仅适用于循环,而可以在其他语句中使用,例如 .continuebreakcontinuebreakswitch

数字表示受影响的嵌套语句数。
如果有2个嵌套循环,则在内部循环中,一个将破坏内部循环(但是这几乎没有意义,因为内部循环将在外部循环的下一次迭代中再次启动)。 在内部循环中将破坏两者。breakbreak 2


答案 2

该数字只是说“跳出多少个范围”

<?php
for($i = 0; $i < 10; ++$i) {
    for($j = 0; $j < 10; ++$j) {
        break 2;
    }
}

$i和$j将为 0

引用手册:

continue 接受一个可选的数字参数,该参数告诉它应该跳到末尾多少层的封闭循环。

休息也是如此。


推荐