POST表单中的数组

时间:2015-01-14 11:21:41

标签: php html arrays forms email

我想保存许多"电子邮件说明"在输入文本数组中,我希望它们与一个名为" subscribed"的复选框数组相关联。所以我做了:

<input type="email" name="email[]">
<input type="checkbox" name="emailsub[]" value="1"/>

如果我尝试打印它们,给出值:

one@one.com checked
two@two.com unchecked
three@three.com checked

使用:

$emails = $_POST["email"];
    for ($i = 0, $limit = count($emails); $i < $limit; $i++){
        echo "Email: " . $_POST["email"][$i] . "<br />";
        echo "Sub: " . $_POST["emailsub"][$i] . "<br />";
    }

它给了我这个结果:

Email: one@one.com
Sub: 1
Email: two@two.com
Sub: 
Email: three@three.com
Sub: 
Email: 1
Sub:

我做错了什么?

非常感谢你 埃斯特

1 个答案:

答案 0 :(得分:2)

您有逻辑错误。 与$_POST['emailsub']$_POST['email']无关。

如果您未选中任何emailsub[]输入复选框,则$_POST['emailsub']数组为空。

如果仅检查最后一个输入,则$_POST['emailsub']数组只有一个带有键0的元素(不是2)。

您应该在html中插入索引:

<input type="email" name="email[0]">
<input type="checkbox" name="emailsub[0]" value="1"/>
<input type="email" name="email[1]">
<input type="checkbox" name="emailsub[1]" value="1"/>
<!-- and so on.. -->

和PHP

$emails = $_POST['email'];
$checks = $_POST['emailsub'];

foreach($emails as $k=>$email) {
    echo "$email " . (isset($checks[$k])? " checked" : "unchecked");
}