1

私はPHPを独学しようとしています。現在の演習では、ユーザーが都市の名前を入力する必要があるフォーム (コードには含まれていませんが、機能します) を組み合わせています。ループと if ステートメントは、エントリを州都の配列と比較して、その都市が州都かどうかを示す回答を返します。

このelseif部分を省略した場合、コードは正常に実行されますが、ユーザーが配列にない都市を入力した場合、代替手段はありません。しかし、elseifでは、ループの最初の部分は実行されません。たとえば、「アルバニー」を なしで入力するとelseif、「アルバニーはニューヨークの首都です」と表示されます。しかし、elseifステートメントを入力すると、「ニューヨーク」が見つかるまでループが実行され、「アルバニーはニューヨークの首都です」と出力されます。

私はこれをグーグルで検索し、持っている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>";

}

?>
4

2 に答える 2

7

を使用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>";
}
于 2013-07-08T01:22:31.213 に答える
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 を配列の長さに設定してループを終了します。

于 2013-07-08T01:24:03.077 に答える