如果答案有点简单,我会道歉。我有一个表格,用户可以在其中添加"额外的线路。我可以完美地克隆它,但我需要它做的是将每一行捕获为一个数组。
示例表:
<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)
);
对每个项目使用[ ]
会将它们分成几个阵列,我不确定你是如何以正确的方式将它们加入到一起的,所以如果有人可以提供帮助,那就会太棒了!
答案 0 :(得分:2)
试试这个:
<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>
注意第二和第三个输入名称周围的rowNum[x][]
。您没有必要在问题中列出第一个输入。
答案 1 :(得分:1)
执行此操作的常规方法是在[]
之后添加{。}}。
<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]))
以判断是否已选中相应的框。
答案 2 :(得分:0)
怎么样
<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>