PHP“继续”停止 foreach 循环

Posted

技术标签:

【中文标题】PHP“继续”停止 foreach 循环【英文标题】:PHP "continue" stops foreach loop 【发布时间】:2014-01-18 13:25:18 【问题描述】:

这似乎是一个非常愚蠢的问题,但没有对服务器进行任何更改.. 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>";
    

输出:

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

我之前用过这个功能,好像没有这个效果。有任何想法吗?就像我说的,服务器上没有任何变化,所以 PHP 版本是一样的。

【问题讨论】:

代码工作正常。你需要什么? 继续工作应该如何uk3.php.net/manual/en/control-structures.continue.php 据我所知,'continue'的作用是绕过代码块内剩余的代码,开始循环的下一次迭代。所以它似乎在做它的工作。 【参考方案1】:

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

【讨论】:

【参考方案2】:

我认为您需要了解 continue 的工作原理。我想添加一些,以便如果其他人遇到同样的情况,可以将此作为参考。

当您想忽略循环的下一次迭代时,您需要使用关键字继续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(); 

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

Got here
Got here
3
Got here
4
Got here
5

如您所见,1 被忽略。

【讨论】:

【参考方案3】:

continue 基本上是说忽略continue 之后的其余代码,然后从 foreach 循环的下一步开始。所以你得到的结果完全没问题(见http://www.php.net/manual/de/control-structures.continue.php)。一定有其他影响改变了你的输出。

【讨论】:

【参考方案4】:

这正是 continue 所做的:

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

【讨论】:

以上是关于PHP“继续”停止 foreach 循环的主要内容,如果未能解决你的问题,请参考以下文章

php中foreach循环遍历二维数组

foreach使用方法

PHP:在forEach中,达到条件时停止执行,但稍后继续

详细讲解foreach循环的用法

如何停止或摆脱 Twig 循环?

for循环 switch foreach用法合区别