PHP继续内部功能

时间:2011-05-31 06:21:25

标签: php function continue

这可能非常微不足道但我无法弄明白。

这有效:

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

知道我做错了吗?

4 个答案:

答案 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的一些指示,例如TRUEFALSE返回值。