POST 形式的数组
Array in a POST form
我想在输入文本数组中保存许多 "emails directions",我希望它们与名为 "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:
我做错了什么?
非常感谢
埃斯特万
你有一个逻辑错误。
与$_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");
}
我想在输入文本数组中保存许多 "emails directions",我希望它们与名为 "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:
我做错了什么?
非常感谢 埃斯特万
你有一个逻辑错误。
与$_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");
}