如何将表单输入数组放入 PHP 数组中

2022-08-30 07:39:11

我有一个像下面这样的表单,它被发布到联系人.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,谢谢


答案 1

它们已经在数组中:是一个数组,就像$name$email

因此,您需要做的就是添加一些处理来攻击两个数组:

$name = $_POST['name'];
$email = $_POST['account'];

foreach( $name as $key => $n ) {
  print "The name is " . $n . " and email is " . $email[$key] . ", thank you\n";
}

要处理更多输入,只需扩展模式:

$name = $_POST['name'];
$email = $_POST['account'];
$location = $_POST['location'];

foreach( $name as $key => $n ) {
  print "The name is " . $n . ", email is " . $email[$key] .
        ", and location is " . $location[$key] . ". Thank you\n";
}

答案 2

例如,通过命名字段,例如

<input type="text" name="item[0][name]" />
<input type="text" name="item[0][email]" />

<input type="text" name="item[1][name]" />
<input type="text" name="item[1][email]" />

<input type="text" name="item[2][name]" />
<input type="text" name="item[2][email]" />

(通过JavaScript添加元素时也可以)

相应的 PHP 脚本可能如下所示

function show_Names($e)
{
  return "The name is $e[name] and email is $e[email], thank you";
}

$c = array_map("show_Names", $_POST['item']);
print_r($c);