通过POST在PHP中使用相同名称的多个输入

时间:2011-10-24 19:10:39

标签: php html arrays forms post

是否有可能获得同名的多个输入发布然后从PHP访问它们?这个想法是这样的:我有一个表格,允许输入无限数量的物理地址和其他信息。如果我只是在几个条目中给每个字段指定相同的名称并通过post提交该数据,PHP是否可以访问它?

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

    $_POST['xyz'][0]

如果是这样,那将使我的生活变得更容易十倍,因为我可以通过表单发送无限量的信息,并通过循环遍历名为“xyz”的项目数组来由服务器处理。 / p>

5 个答案:

答案 0 :(得分:193)

更改输入的名称:

<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”。

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

答案 1 :(得分:36)

在你的html中,你可以传入一个名为

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

这样php就会收到一组地址。

答案 2 :(得分:1)

埃里克(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'],
              ]
        ]

答案 3 :(得分:0)

对于其他发现此问题的人 - 值得注意的是,您可以在输入名称中设置键值。感谢POSTing Form Fields with same Name Attribute中的答案,您也可以在不引用的情况下互动字符串或整数。

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

答案 4 :(得分:0)

可以是:

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