php - POST 形式的数组

标签 php html arrays forms email

我想在输入文本数组中保存许多“电子邮件方向”,并且我希望它们与名为“订阅”的复选框数组相关,所以我这样做:

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

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

<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="cca3a2a98ca3a2a9e2afa3a1" rel="noreferrer noopener nofollow">[email protected]</a> checked
<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="790d0e16390d0e16571a1614" rel="noreferrer noopener nofollow">[email protected]</a> unchecked
<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="c8bca0baadad88bca0baadade6aba7a5" rel="noreferrer noopener nofollow">[email protected]</a> 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: <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="6f00010a2f00010a410c0002" rel="noreferrer noopener nofollow">[email protected]</a>
Sub: 1
Email: <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="76020119360201195815191b" rel="noreferrer noopener nofollow">[email protected]</a>
Sub: 
Email: <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="91e5f9e3f4f4d1e5f9e3f4f4bff2fefc" rel="noreferrer noopener nofollow">[email protected]</a>
Sub: 
Email: 1
Sub:

我做错了什么?

非常感谢 埃斯特万

最佳答案

你有一个逻辑错误。 与 $_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");
}

关于php - POST 形式的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27941720/

相关文章:

javascript - 我怎样才能滚动到#target - 100px?

python - 如何用numpy计算二维向量和OX之间的角度?

php - MySQL 算作最高请求,限制为 5

php - 对一个命令使用不同的 PHP 版本 CLI 可执行文件

php - 将mysql数据导出到csv并下载csv文件

javascript - 有没有办法让用户使用 React.js 将图像上传到服务器?

php - 依赖注入(inject) - 这个非常大的构造函数有替代方案吗?

html css div 元素没有按我的预期显示 - 按照教程

Java:Foreach 循环在 int 数组上没有按预期工作?

ios - 数组 Swift 中的 ArraySlice