如何从函数内部中断for循环

时间:2015-04-02 20:48:15

标签: php loops for-loop break

我有以下代码

function do_function($name, $value, $age){

    $sql = mysql_fetch_array(mysql_query("INSERT into `table` Values('','$name','$value','$age')"));

    if (!$sql) {
        // basicly will return false on duplicate key
        //do something to break the calling for_loop ?
        //i`ve tried break(); and continue(); but this will break/skip just the
        //function not the for loop
    }
}

$presetnumber = 25;
for($x = 0; $x <= $presetnumber; $x++){
    do_function($name[$x], $value[$x], $age[$x]);
    //return something on duplicate key to break the for loop ???
}

所以我想能够跳过整个循环,如果有一个重复的键而不仅仅是函数?

我怎么能这样做,我似乎完全不明白为什么break();或继续();没有用。

请注意,这只是一个示例代码,可以让您了解我想要实现的目标。

3 个答案:

答案 0 :(得分:1)

break不能在for循环之外工作。它必须在循环内才能被激活。所以你可以添加一个函数:

for(foo; bar; baz) {
  if (checkForBreak()) {break};
}

此外,如果你在PHP中工作,那么break是一个声明,而不是一个函数。所以它是break;,而不是break();

答案 1 :(得分:1)

只需在函数中返回TRUE或FALSE,然后就可以像这样在循环中进行简单的检查:

(伪代码):

function do_function($name, $value, $age) {

    //your stuff

    if(!$sql)
        return TRUE;
    return FALSE;

}

for($x = 0; $x <= $presetnumber; $x++){
    if(do_function($name[$x], $value[$x], $age[$x]))  //breaks the loop if you  return TRUE
        break;
}

答案 2 :(得分:0)

我相信您的SQL查询始终返回TRUE。替换这个:

$sql = mysql_fetch_array(mysql_query("INSERT into `table` ... "));

有了这个:

$sql = mysql_query("INSERT into `table` Values('','$name','$value','$age')");

我还建议你开始使用mysqli而不是mysql,因为它已被弃用