函数内的PHP continue

9
这可能很琐碎,但我还没有弄清楚。
这个有效:
function MyFunction(){

//Do stuff

}


foreach($x as $y){

MyFunction();

if($foo === 'bar'){continue;}

//Do stuff

echo $output . '<br>';

}

但是这个不行:
function MyFunction(){

//Do stuff

if($foo === 'bar'){continue;}

}


foreach($x as $y){

MyFunction();

//Do stuff

echo $output . '<br>';

}

那只产生1个$output,然后:
Fatal error: Cannot break/continue 1 level

有什么想法我做错了什么吗?
4个回答

13

在函数外部无法使用break/continue来跳出循环,但是在函数内部可以根据函数的返回值来中断/继续循环:

function myFunction(){   
    //Do stuff
    return $foo === 'bar';
}


foreach($x as $y) {
    if(myFunction()) {
        continue;
    }

    //Do stuff

    echo $output . '<br>';    
}

7

continue语句只能在循环结构中使用。


1
是的,这是正确的。如果你想停止执行一个函数,我会使用 return; - Etienne Marais

1

continue 只能跳过循环结构内的迭代。

在您的函数内部,它被运行在循环中的上下文已经丢失。


0
该函数是单独编译的,可以从任何地方调用。因此,在这里使用continue没有意义,因为上下文不是循环。如果您希望在此处将工作委托给一个函数,则应设计该函数以返回一些指示,例如TRUEFALSE返回值,以表示是否要continue

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接