如何在发布到PHP的HTML表单中使用数组格式输入字段名?
我了解使用数组格式的HTML输入名称的基础知识。如果我有一个具有可变数量“item”输入的表单,我可能会对每个输入执行类似的操作:如何在发布到PHP的HTML表单中使用数组格式输入字段名?,php,html,forms,multidimensional-array,Php,Html,Forms,Multidimensional Array,我了解使用数组格式的HTML输入名称的基础知识。如果我有一个具有可变数量“item”输入的表单,我可能会对每个输入执行类似的操作: <input name='item[]' type='text' /> 但我的问题稍微复杂一点。我有一个表单,用户可以单击“添加一个”按钮,在表单的底部会出现一个新行。每一新行包含一个“名称”和“说明”输入 所以最初我想我会这样做: <input name='item[name][]' type='text' /> <input na
<input name='item[]' type='text' />
但我的问题稍微复杂一点。我有一个表单,用户可以单击“添加一个”按钮,在表单的底部会出现一个新行。每一新行包含一个“名称”和“说明”输入
所以最初我想我会这样做:
<input name='item[name][]' type='text' />
<input name='item[description][]' type='text' />
但它并没有像我希望的那样工作,而是构造了“item”数组,这样我就可以访问第一个item名称,即$item['name'][0]
,而不是$item[0]['name']
然后我翻转它,这样我的输入被命名为:
<input name='item[][name]' type='text' />
<input name='item[][description]' type='text' />
但这导致每个“名称”和每个“描述”都有一个单独的“项目”,而不是将每对组合在一个“项目”中
我真的不喜欢“name”数组和“description”单独数组。我更喜欢“item”数组,每个数组包含一个“name”和一个“description”字段。有没有办法在我的javascript中不生成索引就可以实现这一点?因为人们可以动态地添加和删除这些内容,所以我的javascript很难为下一项计算适当的索引。一般来说,没有办法做到这一点吗?你不可能做你想做的事,但如果有帮助,这里有一些代码可以把它重新组合起来,我认为它们会起作用(使用
item\u name[]
和item\u description[]
):
$items\u desc=$\u POST[“item\u description”];
$items\u name=$\u POST[“item\u name”];
$items=array();
对于($i=0;$i$items\u name[$i],“description”=>$items\u desc[$i]);
}
拥有一个名称
数组和一个描述
数组有什么不好马克·E:我患有强迫症,这真的让我非常讨厌,以至于我无法绕开它继续前进。我的所有其他数组(例如数据库中的数组)都是以行索引作为第一个维度,以属性名称作为第二个维度。克服命名问题的唯一方法是将数字放在空括号中,这似乎是最糟糕的选择,你不这么认为吗?使用代码块上的格式按钮是因为它没有正确地通过你的pre
标记。希望你不介意。@prodigitalson这是版主应该采取的行动!我把它指给别人看!
$items = $_POST['item'];
foreach($items as $item) {
print $item['name'] . ' ' . $item['description'];
}
<input name='item[][name]' type='text' />
<input name='item[][description]' type='text' />
$items_desc = $_POST["item_description"];
$items_name = $_POST["item_name"];
$items = array();
for ($i = 0; $i < count($items_name); $i++)
{
$items[] = array("name" => $items_name[$i], "description" => $items_desc[$i]);
}