Как сломать цикл for изнутри функции

у меня есть следующий код

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 (); или продолжить (); не работает.

Обратите внимание, что это всего лишь пример кода, чтобы дать вам представление о том, чего я пытаюсь достичь.

0

Решение

Просто верните 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;
}
1

Другие решения

break не будет работать вне цикла for. Он должен быть внутри цикла, чтобы быть активированным. Таким образом, вы можете добавить функцию, такую ​​как:

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

Кроме того, если вы работаете в PHP, то break это утверждение, а не функция. Так что это break;не break();,

1

Я считаю, что ваш SQL-запрос всегда возвращает TRUE. Заменить это:

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

С этим:

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

Я бы также предложил вам начать использовать mysqli скорее, чем mysql так как это устарело

0
По вопросам рекламы [email protected]