我理解使用数组格式的HTML输入名称的基础知识.如果我有一个带有可变数量的'item'输入的表单,我可能会为每个表单执行以下操作:
<input name='item[]' type='text' />
Run Code Online (Sandbox Code Playgroud)
当我从$ _POST数组中检索项目时,我可以像这样迭代它们:
$items = $_POST['item'];
foreach($items as $item) {
}
Run Code Online (Sandbox Code Playgroud)
但我的问题稍微复杂一些.我有一个表单,用户可以单击"添加一个"按钮,并在表单的底部编号显示一个新行.每个新行都包含"名称"和"描述"输入.
所以最初我以为我会这样做:
<input name='item[name][]' type='text' />
<input name='item[description][]' type='text' />
Run Code Online (Sandbox Code Playgroud)
然后像这样迭代它们:
$items = $_POST['item'];
foreach($items as $item) {
print $item['name'] . ' ' . $item['description'];
}
Run Code Online (Sandbox Code Playgroud)
但是不是像我希望的那样工作,而是构造'item'数组,这样我就可以访问第一个项目名$item['name'][0]而不是$item[0]['name'].
然后我翻了它,以便我的输入被命名为:
<input name='item[][name]' type='text' />
<input name='item[][description]' type='text' />
Run Code Online (Sandbox Code Playgroud)
但是这会为每个"名称"和每个"描述"生成一个单独的"项目",而不是将每个对分组到一个"项目"中.
我真的不喜欢使用'name'数组和'description'数组.我更喜欢'item'数组,每个数组包含'name'和'description'字段.有没有办法在我的javascript中生成索引而无法完成此操作?由于人们可以动态添加和删除这些,因此我的javascript很难为下一个项目计算适当的索引.一般没有办法做到这一点吗?