通过迭代

时间:2015-05-28 11:53:53

标签: php html forms post

我正在创建一个显示包含16个问题的表单的网页,每行输入如下:

<li>*question 1*</li>
<input type="text" name="answer1" style="height: 40px;" size="50" dir="rtl">

<li>*question 2*</li>
    <input type="text" name="answer2" style="height: 40px;" size="50" dir="rtl">

依此类推 - 我有16条(html)这样的行 (顺便说一句,有没有办法防止这个代码重复?这段代码闻起来......)最后一个提交&#39;按钮。

我的php脚本应该收到这些答案,并将每个答案放在一个名为&#34; answer(i)&#34;的变量中。例如,我可以写出16行这类:

if (isset($_POST['submit'])) {
        $answer1 = $_POST['answer1'];
        $answer2 = $_POST['answer2'];
        ...ect.
        ...
   }

这(也)感觉就像很多代码重复。有没有办法让它更加通用和高效,这样如果我想增加一些新的问题,我不会再次通过这一切了? 我是PHP和HTML的新手,我虽然宣布了一些函数并且每次都调用它们,但是当我搜索关键字如&#39; html函数&#39;我没有找到并帮助提供信息。 编辑:答案标签可能与答案1,答案2 ...&#39;不同。并且可以是一组不同的单词(&#39;年龄&#39;,&#39;性别&#39; ...)

3 个答案:

答案 0 :(得分:-1)

您可以运行循环来浏览POST数组并将信息提取到另一个数组中。

foreach ($_POST as $k => $v) {
      $$k = $v;
}

这会将所有$ _POST数据放入与生成它们的表单字段相同的PHP变量中(请注意,您也可以通过触发表单的按钮获得$ submit)。

答案 1 :(得分:-1)

这是你在找什么?

foreach (range(0,16) as $i)
{
    ${'answer'.$i} = $_POST['answer'.$i];
}

或使用extract(),如果您在$_POST上申请,$_POST变量中的键会被指定为变量。

Here是官方文档。

答案 2 :(得分:-1)

对于HTML,请使用以下内容:

$questions = array(
    'question1',
    'question2',
    //...
);
foreach($question as $id => $qText){
    ?>
    <li>
        <?php echo $qText ?>
        <input type="text" name="answers[]" style="height: 40px;" size="50" dir="rtl">
    </li>
    <?php
}

在PHP方面,您可以在$_POST['answers']获得答案,这将是一个数组。相信我,如果你想把数组中的这些值放到单独的变量中,那就是一个红旗:你的代码有问题。您不希望将一组答案作为自变量。