从PHP中的表单传递多维数组

时间:2014-08-06 20:14:16

标签: php html multidimensional-array

我在这里有点头疼。我的问题如下。 我有三个网站,我通过电子邮件发送邮件,这三个网站都有几个默认邮件地址。 所以在我的表单上,我使用现有地址创建输入,并允许用户更动态地创建。 我可能最终得到以下

site 1 - address 1
site 1 - address 2

site 2 - address 1
site 2 - address 2
site 2 - address 3

我的输入看起来像<input type="text" name="email[]"/>

我需要将站点标识符和输入的地址传递给我的php脚本并循环通过它将列表添加到数据库

2 个答案:

答案 0 :(得分:2)

我们假设一个这样的基本形式:

<form method="post">
    <input type="text" name="email[]" />
    <input type="text" name="email[]" />
</form>

您的电子邮件字段将显示在PHP中,如下所示:

$_POST['email'][0]
$_POST['email'][1]

如您所见,所有电子邮件字段都整齐地存储在数组$_POST['email']中。 PHP将[]附加到输入字段名称时会自动执行此操作。

您还可以将它们更深地嵌套:

<form method="post">
    <input type="text" name="email[1][]" />
    <input type="text" name="email[1][]" />
    <input type="text" name="email[2][]" />
    ...
</form>

现在它们将显示在$_POST['email'][1][...]$_POST['email'][2][...]等等。

答案 1 :(得分:1)

您可以指定数组键并使其成为二维:

name="site[1][]"
name="site[1][]"
name="site[2][]"
name="site[2][]"

然后循环并使用键和值:

foreach($_POST['site'] as $site => $addresses) { // $site is the number and $addresses is an array
    $address_list = implode(',', $adresses);     // or loop $addresses or whatever
}

根据您在特定情况下最容易构建和访问它的方式,有很多可能性。