Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在发布到PHP的HTML表单中使用数组格式输入字段名?_Php_Html_Forms_Multidimensional Array - Fatal编程技术网

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

如何在发布到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

我了解使用数组格式的HTML输入名称的基础知识。如果我有一个具有可变数量“item”输入的表单,我可能会对每个输入执行类似的操作:

<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]);
}