我需要做什么才能“同时循环”停止?

时间:2019-12-02 01:49:21

标签: php while-loop readline

我要检查用户是否输入了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 个答案:

答案 0 :(得分:1)

您正在尝试更新$ 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) 
           }