Что мне нужно сделать, чтобы остановить цикл? - PullRequest
0 голосов
/ 02 декабря 2019

Я хочу проверить, вводит ли пользователь число от 1 до 10, если он это делает, программа должна продолжиться, если нет, программа должна предложить ему повторно войти. вот мой код (php)

$good = false;
   while ($good == false){
   $guess = readline(">>");
   $guess = intval($guess);
   if($guess == 1 or $guess == 2 or $guess == 3 or $guess == 4 or $guess == 5 or $guess == 6 or $guess == 7 or $guess == 8 or $guess == 9 or $guess == 10){
     $guess = true;
   }else{
    echo "Invalid number. Please try again.\n";
     $guess == false; 
   }
     }

, он продолжает цикл, даже если пользователь вводит число от 1 до 10. Я пытался отладить безуспешно. какие-либо предложения?

1 Ответ

1 голос
/ 02 декабря 2019

Вы пытаетесь обновить $ guess вместо $ good. Согласно вашему циклу, $ guess никогда не будет обновлено до true и всегда будет false. Итак, ваш цикл все равно продолжится.

Вам следует обновить $ good до false, как только ваше условие будет выполнено, и это остановит цикл.

Еще одна вещь - вы должны использовать php Функция in_array () вместо сравнения переменной $ guess с 1 до 10.

Вы должны проверить так:

    if (in_array($guess, [1,2,3,4,5,6,7,8,9,10])){
    // your code here
}

или даже так:

$accepted_numbers = array(1,2,3,4,5,6,7,8,9,10);

if (in_array($guess, $accepted_numbers)){
    // your code here
}

См. Код ниже:

$accepted_numbers = array(1,2,3,4,5,6,7,8,9,10);

    if (in_array($guess, $accepted_numbers)){
             // $guess = true;
             $good = true; // you should update $good to true

           }else{
            echo "Invalid number. Please try again.\n";
              // $guess == false; (you don't need this) 
           }
...