跳过当前迭代

Hai*_*ood 48 php loops

我有一个php数组 $numbers = array(1,2,3,4,5,6,7,8,9)

如果我使用foreach循环它 foreach($numbers as $number)

并有一个if语句 if($number == 4)

在那之后,代码行会跳过该行后的任何内容并在5开始循环?休息,返回,退出?

Mat*_*ley 94

您正在寻找continue语句.还有用的是break,它将完全退出循环.这两个语句都适用于循环的所有变体,即.for,foreachwhile.

$numbers = array( 1, 2, 3, 4, 5, 6, 7, 8, 9 );
foreach( $numbers as $number ) {
    if ( $number == 4 ) { continue; }
    // ... snip
}
Run Code Online (Sandbox Code Playgroud)

  • 并不真地。跳跃并不坏。`goto` 在语言中实现,实际上它可以让你跳转到应用程序中的任何地方,这就是不好的地方。函数调用、条件语句、任何引入分支的东西,它们都使用跳转,这没关系。`continue` 有一个定义明确的用例。没关系。如果有什么“打破”更糟。 (3认同)

Bra*_*tie 17

continue;
Run Code Online (Sandbox Code Playgroud)

继续将告诉它跳过当前的迭代块,但继续循环的其余部分.适用于所有场景(适用于,等等)

  • *"跳过当前的迭代块,但继续循环的其余部分"*谢谢,一种非常清晰的表达方式. (2认同)

Jay*_*min 5

打破; 将停止循环并使编译器脱离循环。同时继续 只会跳过当前循环并转到下一个循环。喜欢:

$i = 0;
while ($i++)
{
    if ($i == 3)
    {
        continue;
    }
    if ($i == 5)
    {
        break;
    }
    echo $i . "\n";
}
Run Code Online (Sandbox Code Playgroud)

输出:

1
2
4
6 <- this won't happen
Run Code Online (Sandbox Code Playgroud)