对
这个问题有头脑空白,所以如果答案有点简单,我深表歉意。我有一个表格,用户可以"添加"额外的行。我可以让它完美克隆,但我需要它做的是将每一行捕获为一个数组。
示例表:
<table>
<tr>
<td><input name="rowNum[]" type="text" value="1"></td>
<td><input name="stuff" type="text"></td>
<td><input name="morestuff" type="text"></td>
</tr>
<tr>
<td><input name="rowNum[]" type="text" value="2"></td>
<td><input name="stuff" type="text"></td>
<td><input name="morestuff" type="text"></td>
</tr>
</table>
期望的结果:
$_POST[rowNum] = array(
1 => array(
stuff => valueA,
morestuff => valueB),
2 => array(
stuff => valueC,
morestuff => valueD)
);
为每个项目使用 [ ]
会将它们放在单独的数组中,我不确定您如何以这种方式将它们正确地连接在一起,所以如果有人可以提供帮助,那就太好了!
试试这个:
<tr>
<td><input name="rowNum[1][stuff]" type="text"></td>
<td><input name="rowNum[1][morestuff]" type="text"></td>
</tr>
<tr>
<td><input name="rowNum[2][stuff]" type="text"></td>
<td><input name="rowNum[2][morestuff]" type="text"></td>
</tr>
请注意第 2 个和第 3 个输入名称周围的rowNum[x][]
。您在问题中列出的第一个输入不是必需的。
执行此操作的正常方法是在每个之后放置[]
。
<tr>
<td><input name="rowNum[]" type="text" value="1"></td>
<td><input name="stuff[]" type="text"></td>
<td><input name="morestuff[]" type="text"></td>
</tr>
在 PHP 中,您可以将它们链接在一起,因为同一行中的所有输入都具有相同的索引。您可以一次循环所有这些:
foreach ($_POST['rownum'] AS $i => $rownum) {
$stuff = $_POST['stuff'][$i];
$morestuff = $_POST['morestuff'][$i];
...
}
注意:这不适用于复选框输入。浏览器仅发送复选框,因此它们将与所有其他输入不同步。但是您没有任何复选框,因此这不会成为问题。复选框的解决方案是在输入的值中放入一些内容,将其链接到相应的行。
另一个适用于复选框的解决方案是在所有字段中输入 ID:
<tr>
<td><input name="rowNum[1]" type="text" value="1"></td>
<td><input name="stuff[1]" type="text"></td>
<td><input name="morestuff[1]" type="text"></td>
<td><input name="checked[1]" type=checkbox></td>
</tr>
<tr>
<td><input name="rowNum[2]" type="text" value="2"></td>
<td><input name="stuff[2]" type="text"></td>
<td><input name="morestuff[2]" type="text"></td>
<td><input name="checked[2]" type=checkbox></td>
</tr>
它仍然不会提交未选中的框,但所有索引仍将同步。您可以测试if (isset($_POST['checked'][$i]))
以判断是否选中了相应的框。
怎么样
<td><input name="1[stuff]" type="text"></td>
<td><input name="1[morestuff]" type="text"></td>
</tr>
<tr>
<td><input name="2[stuff]" type="text"></td>
<td><input name="2[morestuff]" type="text"></td>