在 php 中通过 POST 输入具有相同名称的多个输入

是否有可能获得同名的多个输入发布,然后从 PHP 访问它们?这个想法是这样的: 我有一个表单,允许输入不确定数量的物理地址以及其他信息。如果我只是给每个字段相同的名称跨多个条目,并通过邮寄提交数据,PHP 能够访问它吗?

例如,我在一个名为“ xyz”的页面上有五个输入,我想使用 PHP 访问它们。我可以这样做吗:

    $_POST['xyz'][0]

如果是这样,那将使我的生活轻松十倍,因为我可以通过一个表单发送不确定数量的信息,然后通过循环遍历名为“ xyz”的条目数组,由服务器处理这些信息。

225834 次浏览

更改输入的名称:

<input name="xyz[]" value="Lorem" />
<input name="xyz[]" value="ipsum"  />
<input name="xyz[]" value="dolor" />
<input name="xyz[]" value="sit" />
<input name="xyz[]" value="amet" />

然后:

$_POST['xyz'][0] == 'Lorem'
$_POST['xyz'][4] == 'amet'

如果是这样的话,我的生活会轻松十倍,因为我可以发送一个 通过表单获得的不确定数量的信息,并对其进行处理 方法循环通过项数组来实现 名字是“ xyz”。

请注意,这可能是错误的解决方案。显然,这取决于您发送的数据。

在 html 中,您可以传入一个名称的数组,即

<input type="text" name="address[]" />

这样,php 将接收一个地址数组。

对于其他发现这一点的人来说——值得注意的是,您可以在输入名称中设置键值。多亏了 具有相同名称属性的 POSTing 窗体字段中的答案,您还可以在不引号的情况下交互字符串或整数。

答案假设您不介意 PHP 返回的键值,但是您可以设置 name=[yourval](string 或 int) ,然后允许您引用现有的记录。

它可以是:

echo "Welcome".$_POST['firstname'].$_POST['lastname'];

Eric 的回答是正确的,但问题是这些字段没有分组。 想象一下,你有多条街道和多个城市,它们属于一个整体:

<h1>First Address</h1>
<input name="street[]" value="Hauptstr" />
<input name="city[]" value="Berlin"  />


<h2>Second Address</h2>
<input name="street[]" value="Wallstreet" />
<input name="city[]" value="New York" />

结果就是

$POST = [ 'street' => [ 'Hauptstr', 'Wallstreet'],
'city' => [ 'Berlin' , 'New York'] ];

为了按照地址对它们进行分组,我建议使用 Eric 在评论部分也提到的方法:

<h1>First Address</h1>
<input name="address[1][street]" value="Hauptstr" />
<input name="address[1][city]" value="Berlin"  />


<h2>Second Address</h2>
<input name="address[2][street]" value="Wallstreet" />
<input name="address[2][city]" value="New York" />

结果就是

$POST = [ 'address' => [
1 => ['street' => 'Hauptstr', 'city' => 'Berlin'],
2 => ['street' => 'Wallstreet', 'city' => 'New York'],
]
]