PHP - 错误答案后退出循环

时间:2013-07-08 01:16:51

标签: php loops

我正在尝试自学PHP。我当前的练习结合了一个表单(不包含在代码中,但它有效),要求用户输入城市名称。循环和if语句将条目与州首都数组进行比较,以返回一个答案,说明该城市是否为州首府。

如果我遗漏elseif部分,代码运行正常,但当用户输入不在数组中的城市时,我别无选择。但是使用elseif,循环的第一部分不会执行。例如,如果我输入“Albany”而没有elseif,我会得到“奥尔巴尼是纽约的首都”。但是如果我用elseif语句输入它,它会运行循环,直到找到“纽约”并打印出“奥尔巴尼是纽约的首都。”

我已经用Google搜索过了,我已经阅读了有关PHP的书籍。我也知道我犯了一个非常基本的错误。任何指导将不胜感激。

for ($i = 0 ; $i < count($stateCapitalNames); $i++)

if ($enteredCity == $stateCapitalNames[$i]) {

print "<p>$enteredCity is the capital of <b>$stateNames[$i]</b>. </p>";


} elseif ($enteredCity != $stateCapitalNames[$i]){

print "<p>$enteredCity is not the capital of a state.</p>";

}

?>

2 个答案:

答案 0 :(得分:8)

您可以使用break离开for循环。

您应该查看array_search以查找您要查找的索引。如果资本不存在,array_search会返回false

例如

$i = array_search($enteredCity, $stateCapitalNames);
if($i !== false)
{
    echo "<p>$enteredCity is the capital of <b>",$stateNames[$i],"</b>. </p>";
}

答案 1 :(得分:2)

你的for循环中缺少括号。我很惊讶elseif是罪魁祸首,代码不会失败。但这就是我要做的事情,除了错误之外:

$correct = false;

for ($i = 0 ; $i < count($stateCapitalNames); $i++){
    if ($enteredCity == $stateCapitalNames[$i]) {
         $correct = true;
         $stateNames = $stateNames[$i]; // Updated $stateNames variable

         break;
    }
}

//You can check $correct here...
if($correct){
    print "<p>$enteredCity is the capital of <b>$stateNames[$i]</b>. </p>"; /*Removed [$i] from  $stateNames. For some reason, $stateNames[$i] wasn't updating outside the loop, but now it is. 
}

这样,无论如何,在代码找到正确答案之前,用户都是冤枉。一旦找到正确的答案,它就会将其设置为正确并通过将$ i设置为数组的长度来退出循环。