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