例如,我在一个页面上有五个输入,命名为“ xyz”,我想使用PHP访问它们。我可以做些什么:
$_POST['xyz'][0]
如果这样,那会使我的生活轻松十倍,因为我可以通过表格发送无限量的信息并获取它由服务器处理,只需遍历名称为“ xyz”的项目数组即可。
#1 楼
更改输入的名称:<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”。
请注意,这可能是错误的解决方案。显然,这取决于您要发送的数据。
#2 楼
在您的html中,您可以传入名称数组,即<input type="text" name="address[]" />
这样,php将接收地址数组。
评论
正确正确的答案,这就是为什么我投票赞成。但是您没有对此做太多解释,这就是为什么我没有选择它作为我的问题的答案的原因。这已经帮助了我很多,因为我已经尝试了一段时间了(您可能在我之前的一个问题中注意到了)。我以前的方法是简单地将所有输入添加到带有*分隔值的隐藏字段中并重置输入字段,但是这种方法要好十倍,因为如果发现以前添加的地址是不正确
–亚当
11-10-25在16:17
请注意,空数组的POST计数为1,索引为“ 0”时没有任何内容。您需要使用'empty'关键字if(!empty($ arrayName)){//执行某项操作}
–Fi Horan
16年8月26日在13:16
#3 楼
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'],
]
]
#4 楼
对于任何其他发现此问题的人-值得注意的是,您可以在输入名称中设置键值。感谢具有相同Name属性的POSTing Form Fields中的答案,您还可以在不使用引号的情况下交互字符串或整数。答案假定您不介意PHP返回的键值,但是您可以设置
name=[yourval]
(字符串或整数),然后它允许您引用现有记录。评论
自己解析这是胡说八道。没有任何情况需要这样做。
–贾维德
17年2月6日在16:38
#5 楼
可以是:echo "Welcome".$_POST['firstname'].$_POST['lastname'];
评论
谢谢您的帮助。由于这是我问题的最完整答案,因此我选择它作为答案。但是,来自Interstellar_coder的答案也很好,但是您已经解释说,如果使用不正确,这可能是一个陷阱。我将限制项目的最大数量,并且我将在此表单上进行很多验证,因此,除非此方法中固有的问题未在此处进行说明,否则我不会遇到任何安全问题。
–亚当
2011-10-25 2:14
@Adam:重新阅读您的问题后,这是一种非常容易接受的方法。您可能想更进一步,并获得address [0] [street] address [0] [city] address [0] [zip],address [1] [street] address [1] [city] address [1 ] [zip] ...例如,您可以使用$ _POST ['address'] [0] ['city']阅读这些内容
–埃里克
2011-10-25 13:03
那么如何在HTML中命名呢?这样可以大大减轻难度。我要采用的方法是将几个字段命名为:l1 [],l2 [],city [],state [],zip [],zip4 []。然后,对于第一个地址,我只需在每个字段中使用$ i == 0。因此,如果我正确地理解了您的方法,则可能会这样命名我的元素:name =“ address [] [city]”用于城市字段。那是对的吗?
–亚当
2011年10月25日16:04
@亚当:可能。我认为您可能需要将索引放在第一个[]中,例如[0]。这使得HTML更加难以生成,但是在PHP端读取数据并不困难
–埃里克
2011-10-25 20:30
我想到的问题是:该字段是否会在数组内以随机顺序出现?还是按格式排列它们(即使有些字段留空)?
–rajeev
13年1月16日在15:59