我有下面的表格(摘录)
<tr>
<td><?php echo "$navn";?><input type="hidden" name="historik[]" value="<?php echo "$navn";?>"></td>
<td><?php echo "$primaereMuskelgruppe";?><input type="hidden" name="historik[]" value="<?php echo "$primaereMuskelgruppe";?>"></td>
<td><?php echo "$sekundaereMuskelgruppe";?><input type="hidden" name="historik[]" value="<?php echo "$sekundaereMuskelgruppe";?>"></td>
<td><?php echo "$redskab";?><input type="hidden" name="historik[]" value="<?php echo "$redskab";?>"></td>
<?php
switch ($antalReps) {
case 'Alle':?>
<td><?php echo "$vaegt12reps";?><input type="hidden" name="historik[]" value="<?php echo "$vaegt12reps";?>"></td>
<td><?php echo "$vaegt10reps";?><input type="hidden" name="historik[]" value="<?php echo "$vaegt10reps";?>"></td>
<td><?php echo "$vaegt8reps";?><input type="hidden" name="historik[]" value="<?php echo "$vaegt8reps";?>"></td>
<td><?php echo "$vaegt6reps";?><input type="hidden" name="historik[]" value="<?php echo "$vaegt6reps";?>"></td>
<?php break;?>
<?php case 12:?>
<td><?php echo "$vaegt12reps";?><input type="hidden" name="historik[]" value="<?php echo "$vaegt12reps";?>"></td>
<?php break;?>
<?php case 10:?>
<td><?php echo "$vaegt10reps";?><input type="hidden" name="historik[]" value="<?php echo "$vaegt10reps";?>"></td>
<?php break;?>
<?php case 8:?>
<td><?php echo "$vaegt8reps";?><input type="hidden" name="historik[]" value="<?php echo "$vaegt8reps";?>"></td>
<?php break;?>
<?php case 6:?>
<td><?php echo "$vaegt6reps";?><input type="hidden" name="historik[]" value="<?php echo "$vaegt6reps";?>"></td>
<?php break;
}
?>
<td><?php echo "$inkrementering";?><input type="hidden" name="historik[]" value="<?php echo "$inkrementering";?>"></td>
<td><input type="text" name="historik[]"><br></td>
<?php
}
}
?>
</tr>
</table>
<input type="submit" value="Gem træning" name="submit">
</form>
表单表可以有1-->多行。除最后一列外的所有列都是只读的。
当用户单击提交时,我希望它发布到一个不同的页面,其中包含许多"historik"数组,每行一个。
然后,在下一页上,我想浏览每个数组,比如:
foreach ($_POST['historik'] as $historikArray)
{
echo $historikArray;
当我完成上面的操作时,输出似乎是可以的——我得到的是以前形式中每行的数据数组
但是,当我做这样的事情时:
foreach ($_POST['historik'] as $historikArray)
{
echo $historikArray[3];
我希望它能遍历每个数组(即前一个表单中的每一行),并显示每个数组的数组项目编号3。
相反,它会回显每行/数组的每个字段中的每一条数据的第三个字符,以及一个通知。下面我发布了表中的两行,每行中每个字段的第三个字符。。。
n
s
c
g
0
0
Notice: Uninitialized string offset: 3 in D:'Programmer'Xampp'htdocs'styrkesite'modtagHistorik.php on line 16
s
s
c
n
0
0
Notice: Uninitialized string offset: 3 in D:'Programmer'Xampp'htdocs'styrkesite'modtagHistorik.php on line 16
显然,我为每一行发布一个字符串,而不是一个数组(?)
有人能帮忙吗?此外,理想情况下我想使用关联数组,但在这种情况下我不知道如何。。。
您确实在发布字符串。不能发布数组。您可以先将数组序列化为字符串,然后在post之后取消序列化。
更改:
<td><?php echo "$navn";?><input type="hidden" name="historik[]" value="<?php echo "$navn";?>"></td>
收件人:
<td><?php echo "$navn";?><input type="hidden" name="historik[]" value="<?php echo base64_encode(serialize($navn));?>"></td>
然后在你的循环中:
foreach ($_POST['historik'] as $historikArray)
{
echo unserialize(base64_decode($historikArray))[3];
是。你的html创建了一个字符串数组,而不是数组数组
$_POST['historik']是一个数组
在for每个循环中,您所调用的histrikArray变量是一个字符串。
尝试在$_POST上执行print_r或var_dump以查看其中的内容。