【发布时间】:2018-08-26 08:11:12
【问题描述】:
假设我有一个包含带有
的输入字段的表单name="my_options[my_elements][1][name]"
还有一个
name="my_options[my_elements][1][category]"
当我提交表单时,一切正常,包含名称和类别键/值的新数组被添加到 DB 中 my_options 数组中的 my_elements 数组中。
我也可以使用name="my_options[my_elements][][name]"
在my_options[my_elements]中创建一个新数组
但是我显然不能再使用name="my_options[my_elements][][category]"
因为这会将类别值放入另一个新数组中。
有没有办法动态跟踪使用第一个 [] 创建的新数组的位置,以便可以在多维数组的特定级别添加值?
为了澄清,我希望动态地将元素添加到以下数组:
'my_options' =>
array (size ?)
0 =>
'my_elements' =>
array (size=2)
0 =>
array (size=2)
'name' => 'name 1'
'category' => 'cat 1'
1 =>
array (size=2)
'name' => 'name 2'
'category' => 'cat 2'
`
【问题讨论】:
-
我怀疑有没有一种方法可以做到这一点,而无需像您已经做过/尝试过的那样手动指定索引。有那么大的问题吗?您可能已经在 HTML 端的某处有一个索引值,无论它是 foreach 循环的键还是为动态表单增加的数字。
-
问题是表单可以通过JQuery在前端删除行,这导致后端不存在索引问题。我可能需要以某种方式重新索引行并将行号插入到数组表达式中,然后再发布。
-
如何导致索引不存在?如果您删除一行,那么实际上不再将其索引发送到后端,让它知道它已被删除似乎是合乎逻辑的。如果您发送第 1、3 和 4 行,您知道它与之前的第 1、3 和 4 行相同,但第 2 行现在不存在,因此被删除。
-
这可能只是因为我使用从 0 到键的数组长度 -1 的 for 循环显示现有行。可以使用 foreach 循环来解决这个问题。
标签: php arrays forms multidimensional-array