如何在我的HTML表单中使用发布到PHP的数组格式输入字段名称?

fum*_*plr 8 html php forms multidimensional-array

我理解使用数组格式的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很难为下一个项目计算适当的索引.一般没有办法做到这一点吗?

cri*_*uin 9

它不可能做你想要的,但如果它有帮助,这里有一些代码将它重新组合在一起,我认为它将起作用(with 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]);
}
Run Code Online (Sandbox Code Playgroud)

  • 使用了代码块上的格式按钮,因为它无法与您的“pre”标签一起正确显示。希望你不介意。 (2认同)