我正在创建一个显示16个问题的表单的网页,每一行输入看起来像:
<li>*question 1*</li>
<input type="text" name="answerswer1" style="height: 40px;" size="50" dir="rtl">
<li>*question 2*</li>
<input type="text" name="answerswer2" style="height: 40px;" size="50" dir="rtl">
等等——我有16行这样的(html)行(顺便问一下,有没有办法防止这种代码重复?这段代码闻起来…),最后是一个"提交"按钮。
我的php脚本应该接收这些答案,并把每个答案在一个名为"答案(i)"的变量中,例如,我可以写16行这样的:
if (isset($_POST['submit'])) {
$answer1 = $_POST['answer1'];
$answer2 = $_POST['answer2'];
...ect.
...
}
这(也)感觉像是大量的代码重复。有没有一种方法可以使它更通用、更有效,这样如果我想添加一些新问题,我就不必再重复一遍了?我是PHP和HTML的新手,我想声明一些函数并每次调用它们,但当我搜索关键词时,如"HTML函数"等。我没有找到有用的信息。编辑:答案标签可能不同于"answerswer1, answer2…",可以是一组不同的单词('age', 'gender'…)
对于HTML,使用如下代码:
$questions = array(
'question1',
'question2',
//...
);
foreach($question as $id => $qText){
?>
<li>
<?php echo $qText ?>
<input type="text" name="answerswers[]" style="height: 40px;" size="50" dir="rtl">
</li>
<?php
}
在PHP方面,你会有你的答案在$_POST['answers']
,它将是一个数组。相信我,如果你想把这些值从数组到单独的变量,这是一个危险的信号:你的代码有问题。您不希望将一组答案作为独立变量。
您可以运行一个循环来遍历POST数组并将信息提取到另一个数组中。
foreach ($_POST as $k => $v) {
$$k = $v;
}
这将把所有的$_POST数据放入PHP变量中,命名与生成它们的表单字段相同(注意,您还将从触发表单的按钮中获得$submit)。
这是你要找的吗?
foreach (range(0,16) as $i)
{
${'answer'.$i} = $_POST['answer'.$i];
}
或使用extract()
,如果您在$_POST
上应用,则$_POST
变量中的键被分配为变量。
这是官方文档