2016-08-19 2 views
0

я следующий код:Хотя цикл, и если - выполнить только один раз

while($row = mysql_fetch_assoc($result)) 
{ 
    if(strtolower($message) == $row['question']) 
    { 
     msg($row['answer']); 
     update($row['question']); 
    } else { 
     dodaj(strtolower($message), '', 0); 
    } 
} 

, и я хотел бы выполнить функцию dodaj(); только один раз, а не несколько раз. Как это сделать? Пожалуйста, помогите, спасибо вам большое. Приветствия.

+0

Способ, которым вы написали программу, сколько раз вы ожидаете выполнения условия else? – d3r1ck

ответ

2

Используйте переменную, чтобы помнить, если вы назвали dodaj.

$called_dodaj = false; 
while($row = mysql_fetch_assoc($result)) 
{ 
    if(strtolower($message) == $row['question']) 
    { 
     msg($row['answer']); 
     update($row['question']); 
    } elseif (!$called_dodaj) { 
     dodaj(strtolower($message), '', 0); 
     $called_dodaj = true; 
    } 
} 
+0

Просто собирался написать это, используя флаг, чтобы указать, прошло или нет другое, если прошло – feareoc

+0

Большое спасибо! – mandaryneks

0

Используйте break заявление:

while($row = mysql_fetch_assoc($result)) 
{ 
    if(strtolower($message) == $row['question']) 
    { 
     msg($row['answer']); 
     update($row['question']); 
    } else { 
     dodaj(strtolower($message), '', 0); 
     break; 
    } 
} 

EDIT: Я предположил, вы имели в виду, чтобы остановить обработку результатов, как только dodaj() называли. Однако, если вы имеете в виду, что вы хотите только вызвать dodaj() один раз, используйте переменную флаг:

$dodajCalled = false; 
while($row = mysql_fetch_assoc($result)) 
{ 
    if(strtolower($message) == $row['question']) 
    { 
     msg($row['answer']); 
     update($row['question']); 
    } elseif (!$dodajCalled) { 
     dodaj(strtolower($message), '', 0); 
     $dodajCalled = true; 
    } 
} 
+0

Что происходит с другими результатами из базы данных? – d3r1ck

+0

Не остановилась бы остановка после перерыва? Я думаю, он имел в виду не выполнять эту функцию, а продолжать цикл. – streetturtle

+0

@ d3r1ck - Они не обрабатываются, что, как мне кажется, требуется OP. –