这可能非常微不足道但我无法弄明白。
这有效:
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美元的产出然后:
Fatal error: Cannot break/continue 1 level
知道我做错了吗?
答案 0 :(得分:11)
您无法在函数内断开/继续函数外的循环。但是,您可以根据函数的返回值来中断/继续循环:
function myFunction(){
//Do stuff
return $foo === 'bar';
}
foreach($x as $y) {
if(myFunction()) {
continue;
}
//Do stuff
echo $output . '<br>';
}
答案 1 :(得分:7)
continue
语句仅在循环结构内有效。
答案 2 :(得分:1)
continue
只能跳过循环结构内的迭代。
在函数内部,它在循环中运行的上下文将丢失。
答案 3 :(得分:0)
该函数是单独编译的,可以从任何地方调用。因此,continue
的使用在这里没有意义,因为上下文不在循环中。如果您希望将工作委托给函数,则应设计函数以返回是否continue
的一些指示,例如TRUE
或FALSE
返回值。