【发布时间】:2011-06-10 05:50:30
【问题描述】:
我了解使用数组格式的 HTML 输入名称的基础知识。如果我有一个包含可变数量的“项目”输入的表单,我可能会为每个输入做这样的事情:
<input name='item[]' type='text' />
当我从 $_POST 数组中检索项目时,我可以像这样遍历它们:
$items = $_POST['item'];
foreach($items as $item) {
}
但我的问题稍微复杂一些。我有一个表单,用户可以在其中单击“添加一个”按钮,表单底部将出现一个新行。每个新行都包含一个“名称”和“描述”输入。
所以一开始我以为我会这样做:
<input name='item[name][]' type='text' />
<input name='item[description][]' type='text' />
然后像这样遍历它们:
$items = $_POST['item'];
foreach($items as $item) {
print $item['name'] . ' ' . $item['description'];
}
但它并没有像我希望的那样工作,而是构造了“项目”数组,这样我就可以将第一个项目名称访问为 $item['name'][0] 而不是 $item[0]['name']。
然后我翻转它,这样我的输入就被命名为:
<input name='item[][name]' type='text' />
<input name='item[][description]' type='text' />
但这导致每个“名称”和每个“描述”都有一个单独的“项目”,而不是将每一对分组在一个“项目”中。
我真的不喜欢有“名称”数组和单独的“描述”数组。我更喜欢“项目”数组,每个数组包含一个“名称”和一个“描述”字段。有没有办法在我的javascript中不生成索引来实现这一点?由于人们可以动态添加和删除这些,因此我的 javascript 很难为下一项计算适当的索引。一般没有办法做到这一点吗?
【问题讨论】:
-
拥有
name数组和description数组有什么不好? -- 你可以稍后将它们拼凑起来。 -
@Mark E:我有强迫症,这真的让我很困扰,以至于我无法绕过它继续前进。我所有的其他数组(例如来自数据库)都是第一个维度的行索引和第二个维度的属性名称。
-
嗯,解决命名问题的唯一方法是将数字放在空括号中,这似乎是可用选择中最糟糕的,你不觉得吗?
标签: php html forms multidimensional-array