PHP“继续”停止foreach循环

时间:2014-01-18 13:25:19

标签: php foreach continue

这似乎是一个非常愚蠢的问题,但没有对服务器进行任何更改.. PHP中的continue函数似乎开始工作不正确。

例如:

function contTest(){
    $testers = array(1, 3, 4, 5);
    foreach($testers as $test){
        echo "Got here<br>";
        continue;
        echo $test."<br>";
    }
}

输出:

Got here
Got here
Got here
Got here

鉴于:

function contTest(){
    $testers = array(1, 3, 4, 5);
    foreach($testers as $test){
        echo "Got here<br>";
        echo $test."<br>";
    }
}

OUPUTS:

Got here
1
Got here
3
Got here
4
Got here
5

我之前使用过这个功能,似乎没有这个效果。有任何想法吗?就像我说的那样,服务器上的任何内容都没有改变,因此PHP版本是相同的。

4 个答案:

答案 0 :(得分:14)

我不知道你想要什么效果,但这个例子工作正常。 continue需要打破当前迭代并转到下一个而不执行此运算符下面的代码。从PHP 4开始,此函数在这种情况下一直有效。

答案 1 :(得分:6)

我认为您需要了解继续如何运作。我想添加一些,所以如果其他人面对相同,可能会有这个作为参考。

您需要使用关键字继续当您想要忽略循环的下一次迭代时。 continue is always used with if condition

根据这里的例子。

function contTest(){
    $testers = array(1, 3, 4, 5);
    foreach($testers as $test){
        echo "Got here<br>";
        **continue;**
        echo $test."<br>";
    }
}

这是预期和完美的工作,这就是原因。 你循环遍历数组$ testers里面有四个元素 在获取每个元素之后,您告诉php使用忽略元素 继续,这就是它不会输出数组元素的原因 $测试。

让我试着在这里重写你的例子。

function contTest(){
    $testers = array(1, 3, 4, 5);
    foreach($testers as $test){
        echo "Got here<br>";
        if ($test == 1):
        continue;
        endif;
        echo $test."<br>";
    }
}

echo contTest(); 

如果element等于1,我刚刚使用continue,这意味着该元素将是 跳过(忽略)。 输出是:

Got here
Got here
3
Got here
4
Got here
5

如你所见,1被忽略了。

答案 2 :(得分:1)

continue基本上表示忽略continue之后的其余代码,并从foreach循环的下一步开始。所以你得到的结果是完全可以的(见http://www.php.net/manual/de/control-structures.continue.php)。必须有一些其他效果才能改变你的输出。

答案 3 :(得分:0)

这就是继续做的事情:

continue在循环结构中用于跳过当前循环迭代的其余部分,并在条件评估和下一次迭代开始时继续执行。 - http://www.php.net/manual/en/control-structures.continue.php