【发布时间】:2016-03-18 18:16:02
【问题描述】:
我正在尝试通过使用for 循环而不是多个if 语句来创建代码逻辑。
这是我之前使用的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 变量。我在这段代码中的问题是它非常低效,因为我最终不得不创建十个左右 if 语句。
我想出了一个 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[];
}
}
};
对于此代码,我尝试循环遍历三个数组,$postAns、$correct 和 $incorrect。 $correct 和 $incorrect 数组在调用时会根据它们是否得到正确的答案打印出文本。
所以对于for 循环,我希望能够循环遍历$postAns 数组的每个值,以检查它是哪个答案编号以及它是否是正确答案。如果它是正确的,那么代码循环通过$correct 以获得该答案编号的正确文本并增加totalCorrect 的值,该变量存储了多少用户正确。如果不正确,代码将循环通过 $incorrect 以获取该答案编号的正确文本。
总的来说,我对循环并不是很精通,因此我们将不胜感激任何见解/帮助。
编辑:包括表单提交代码
<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>
【问题讨论】: