如何从函数内部中断 for 循环
How to break a for loop from inside of a fuction
我有以下代码
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();或继续();不工作。
请注意,这只是一个示例代码,可以让您了解我正在努力实现的目标。
break
在 for 循环之外不起作用。它必须在要激活的循环内。所以你可以添加一个函数,如:
for(foo; bar; baz) {
if (checkForBreak()) {break};
}
此外,如果您在 PHP 中工作,那么 break
是一个语句,而不是一个函数。所以它是 break;
,而不是 break();
。
只需 return 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;
}
我相信您的 SQL 查询总是返回 TRUE。替换为:
$sql = mysql_fetch_array(mysql_query("INSERT into `table` ... "));
有了这个:
$sql = mysql_query("INSERT into `table` Values('','$name','$value','$age')");
我还建议您开始使用 mysqli
而不是 mysql
,因为它已被弃用
我有以下代码
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();或继续();不工作。
请注意,这只是一个示例代码,可以让您了解我正在努力实现的目标。
break
在 for 循环之外不起作用。它必须在要激活的循环内。所以你可以添加一个函数,如:
for(foo; bar; baz) {
if (checkForBreak()) {break};
}
此外,如果您在 PHP 中工作,那么 break
是一个语句,而不是一个函数。所以它是 break;
,而不是 break();
。
只需 return 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;
}
我相信您的 SQL 查询总是返回 TRUE。替换为:
$sql = mysql_fetch_array(mysql_query("INSERT into `table` ... "));
有了这个:
$sql = mysql_query("INSERT into `table` Values('','$name','$value','$age')");
我还建议您开始使用 mysqli
而不是 mysql
,因为它已被弃用