我有一个表单,类似下面这样的表单,它被提交到 contacts.php,用户可以使用jQuery动态添加更多内容。
<input type="text" name="name[]" />
<input type="text" name="email[]" />
<input type="text" name="name[]" />
<input type="text" name="email[]" />
<input type="text" name="name[]" />
<input type="text" name="email[]" />
如果我使用下面的PHP代码将它们输出:
$name = $_POST['name'];
$email = $_POST['account'];
foreach($name as $v) {
print $v;
}
foreach($email as $v) {
print $v;
}
我将得到类似以下的内容:
name1name2name3email1email2email3
如何将这些数组转换成下面的代码所示的格式?
function show_Names($n, $m)
{
return("The name is $n and email is $m, thank you");
}
$a = array("name1", "name2", "name3");
$b = array("email1", "email2", "email3");
$c = array_map("show_Names", $a, $b);
print_r($c);
我的输出结果如下:
名字是name1,电子邮件是email1,谢谢 名字是name2,电子邮件是email2,谢谢 名字是name3,电子邮件是email3,谢谢
$emails[1]
对应于名为$name[1]
的用户吗?我认为我过去遇到过这个问题,但我可能错了。谢谢。 - nicolagiforeach
使用的是值数组,而$name = $_POST['name'];
会将其留作字符串,因此当您尝试遍历它时,系统会立即中断,因为它不是一个数组而是一个字符串。您是不是想用$name[] = $_POST['name'];
代替这个呢?(抱歉回复晚了,当我看到这个问题时感到有些误导...) - Can O' Spam$_POST['name']
是一个字符串。但是,如果你的页面有多个具有相同名称值的<input>
元素,则不是这种情况。当发生这种情况时,PHP 将会将$_POST
变量加载为一个数组。确实,在只有一个输入元素的情况下,此代码可能无法按预期工作。如果你正在处理一个动态生成的表单,该表单可以具有任意数量的输入,则可能需要添加处理零个或一个输入的情况,而不是许多输入,但这超出了本问题/答案的范围。 - Jeffrey Blake