2016-08-19 4 views
0

I folgende Code haben:While-Schleife, und wenn - nur einmal ausführen

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

und ich möchte dodaj Funktion auszuführen(); nur einmal, nicht ein paar Mal. Wie es geht? Bitte helfen Sie, vielen Dank. Grüße.

+0

Wie Sie das Programm geschrieben haben, wie oft erwarten Sie, dass die else-Bedingung ausgeführt wird? – d3r1ck

Antwort

2

eine Variable verwenden zu erinnern, wenn Sie dodaj genannt.

$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

Ich wollte nur dies schreiben, mit einer Flagge, um anzuzeigen, ob das else, wenn es durch – feareoc

+0

gegangen ist Vielen Dank! – mandaryneks

0

Verwenden Sie eine break Anweisung:

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

EDIT: Ich nahm Sie Verarbeitungsergebnisse zu stoppen bedeutete einmal dodaj() genannt wurde. Wenn Sie jedoch bedeuten, dass Sie nur dodaj() einmal anrufen möchten, verwenden Sie eine Flagvariable:

$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

Was passiert mit den anderen Ergebnissen aus der Datenbank? – d3r1ck

+0

Würde nicht Schleife stoppen nach Pause? Ich denke, er wollte diese Funktion nicht ausführen, sondern die Schleife fortsetzen. – streetturtle

+0

@ d3r1ck - Sie sind nicht verarbeitet, was ich denke OP will. –

Verwandte Themen