2017-10-13 9 views
1

So habe ich die for-Schleife geschrieben, wie unten gezeigt, und aus irgendeinem Grund, nach dem ersten Mal durch die Schleife, stoppt die Schleife. In diesem Fall versuche ich, den Wert 4 durch zu senden, und es schlägt die if-Anweisung fehl, die nach einer Zeichenfolge "true" von der checkRes-Funktion sucht. Das ist alles, was die Funktion String zurückgibt. Es ist mein Verständnis von Schleifen, dass es die Schleife durchläuft, bis die Anweisung an der Spitze erfüllt ist, oder es wird beendet. Was mache ich unten falsch?
For-Schleife nicht nach der ersten Iteration

// assume $avaliable = 4; 
for ($i=$avaliable;10>$i;$i++) { 
    $check = checkRes($i, $people_no, $booking_date); 
     if ($check === "true") { 
      switch($i) { 
       case 0: $newResTime = "6 PM"; break; 
       case 1: $newResTime = "6:30 PM"; break; 
       case 2: $newResTime = "7 PM"; break; 
       case 3: $newResTime = "7:30 PM"; break; 
       case 4: $newResTime = "8 PM"; break; 
       case 5: $newResTime = "8:30 PM"; break; 
       case 6: $newResTime = "9 PM"; break; 
       case 7: $newResTime = "9:30 PM"; break; 
       case 8: $newResTime = "10 PM"; break; 
       case 9: $newResTime = "10:30 PM"; break; 
       case 10: $newResTime = "11 PM"; break; 
      } 
      // Replace next line with your return from the chatbot 
      echo "We're sorry, that time isn't avaliable, but a reservation at $newResTime has been made!"; 
      exit; 
     } 
    } 
+2

Ihre 'Ausfahrt entfernen;' ' – aldrin27

+0

$ check' wahr ist, so ist es in den' if' ist Eingabe und darauf haben Sie einen 'exit;' so es die Schleife macht stop – GEPD

+0

dieser Code ist verrückt. Warum gibt Ihre Check-Res-Funktion nur einen Bool zurück? warum nicht die Zeit direkt zurückgeben? Was zur Hölle hat ein Iterationsindex mit einer Reservierung zu tun? – Rafael

Antwort

2

Sie verwenden derzeit exit als "default" Lösung. Aber es beendet immer die Ausführung des Programms (da das exit tut).

Stattdessen tun dies

switch($i) { 
    case 0: $newResTime = "6 PM"; break; 
    case 1: $newResTime = "6:30 PM"; break; 
    case 2: $newResTime = "7 PM"; break; 
    case 3: $newResTime = "7:30 PM"; break; 
    case 4: $newResTime = "8 PM"; break; 
    case 5: $newResTime = "8:30 PM"; break; 
    case 6: $newResTime = "9 PM"; break; 
    case 7: $newResTime = "9:30 PM"; break; 
    case 8: $newResTime = "10 PM"; break; 
    case 9: $newResTime = "10:30 PM"; break; 
    case 10: $newResTime = "11 PM"; break; 
    default: echo "..."; break; 
+0

Dies hat nicht funktioniert, weil das Programm es nie zu der switch-Anweisung macht, weil $ check nicht zu true auswertet, also macht es es nie zu diesem Exit in der if-Anweisung. Selbst wenn es zu dieser if-Anweisung kommen sollte, sehe ich kein Echo –

Verwandte Themen