我理解使用数组格式的
HTML输入名称的基础知识.如果我有一个带有可变数量的’item’输入的表单,我可能会为每个表单执行以下操作:
<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’数组,这样我就可以将第一个项目名称作为$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_name []和item_description []):
$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]); }