【问题标题】:passing multidimensional array from form in php在php中从表单传递多维数组
【发布时间】:2014-08-06 20:14:15
【问题描述】:

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

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 脚本并循环遍历它以将列表添加到数据库中

【问题讨论】:

  • 如果您知道自己只有 3 个站点,为什么不使用 name="site1email[]"name="site2email[]"name="site3email[]"
  • 网站项目是动态的,因此可以是一天结束时的任何数字,并带有关联的地址
  • 所以当您说“我有三个要通过电子邮件发送邮件的站点”时,您的真正意思是“我可以通过电子邮件发送邮件到的动态数量的站点”?
  • 你也可以name="email[site1][]"/name="email[site2][]"/etc

标签: php html multidimensional-array


【解决方案1】:

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

<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][...] 等等。

【讨论】:

    【解决方案2】:

    您可以指定数组键,也可以将其设为二维:

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

    然后循环使用key和value:

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

    有很多可能性取决于在您的特定情况下如何最容易地构建和访问它。

    【讨论】:

    • 所以如果我理解正确的话,我会有'code' name="email[siteid][]"。或者我将拥有它 name="email[1][]".
    • 是的,这行得通。我使用了站点,因为数字是站点编号,并且更有意义。
    • 要在 php 中访问它,我使用 echo $email[siteid][offest]。 ;) 所以我设法从你所说的中弄清楚了,非常感谢你
    猜你喜欢
    • 2012-04-28
    • 2021-04-16
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多