我正在尝试自学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>";
}
?>
答案 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设置为数组的长度来退出循环。