我要检查用户是否输入了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之间的数字,它也会继续循环播放。我尝试调试没有成功。有什么建议吗?
答案 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)
}