複数のif
ステートメントの代わりにfor
ループを使用してコードロジックを作成しようとしています。forループを使用して複数の配列を循環するコードロジックを作成する
これは私が前に使用前のif
文のコードです:
if (isset($_POST['answer1']))
{
if ($_POST['answer1'] === '1d')
{
print $correct[0];
}
elseif ($_POST['answer1'] === '1b')
{
print $incorrect[0];
}
elseif ($_POST['answer1'] ==='1c')
{
print $incorrect[0];
}
elseif ($_POST['answer1'] === '1a')
{
print $incorrect[0];
}
};
このコードは私の答えと印刷のどちらか$correct
または$incorrect
変数をチェックすることができます。このコードの私の問題は、非常に効率が悪いということです。なぜなら、最終的に10個程度の文を作成しなければならないからです。私が説明するためにfor
ループコードのモックアップを思い付いた
:このコードの場合
$_SESSION["totalCorrect"] = 0;
if (!isset($_SESSION["totalCorrect"]))
{
$_SESSION["totalCorrect"] = 0;
}
else
{
$totalCorrect = $_SESSION["totalCorrect"];
}
$postAns = array($_POST['answer1'] as $ans1, $_POST['answer2'] as $ans2, $_POST['answer3'] as $ans3, $_POST['answer4'] as $ans4, $_POST['answer5'] as $ans5, $_POST['answer6'] as $ans6,
$_POST['answer7'] as $ans7, $_POST['answer8'] as $ans8, $_POST['answer9'] as $ans9, $_POST['answer10'] as $ans10);
for ($i = 0; $i < count($postAns); i++)
{
if ($i == $postAns[])
{
if ($postAns[] === 'answer')
{
print $correct[];
$_SESSION["totalCorrect"]++;
}
else()
{
print $incorrect[];
}
}
};
を、私は3つの、私はを通じてサイクルにしようとしていますことを関与配列、$postAns
、$correct
、および$incorrect
を持っています。 $correct
と$incorrect
配列が呼び出されると、答えが正しいかどうかによってテキストが出力されます。
for
ループの場合、$postAns
配列の各値を確認し、どの答え番号であるか、そして正しい答えかどうかを調べることができます。正しければ、コードは$correct
を循環してその回答番号の正しいテキストを取得し、ユーザがどれだけ多くの権利を得たかを格納する変数totalCorrect
の値を増やします。間違っている場合、コードは$incorrect
を循環して、その回答番号の正しいテキストを取得します。
私は一般的にループに堪能ではないので、どんな洞察力/助けでも大歓迎です。
編集:私は本当にあなたが達成しようとしているのか分からないが、ループは次のようになりますし、あなたがif
たりと、いくつかの検証を行うことができますフォームの送信コード
<form action="staff_info.php" method="get" id="q1">
<fieldset>
<legend>Question 1</legend>
<input type="radio" name="answer1" value="1a" id="1a"><label for="1a"> A. </label>
<input type="radio" name="answer1" value="1b" id="1b"><label for="1b"> B. </label>
<input type="radio" name="answer1" value="1c" id="1c"><label for="1c"> C. </label>
<input type="radio" name="answer1" value="1d" id="1d"><label for="1d"> D. </label>
<input type="button" id="answer" class="button " title="abutton" value="ANSWER">
<a href="staff_q2.php" class="button " title="nbutton" style="float:right;" id="next">NEXT</a>
</fieldset>
こんにちは、後半の返信にお詫び申し上げますが、このコードはいくつかの調整を行いました。 if文の外に$ responseIndexを移動しました。これは正しいテキストの代わりにすべてのテキストを出力したためですが、コードの一般的な考え方は信じられないほど役に立ちました。 – Wolfrum