我有以下表格(摘录)
<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 - >多行。除最后一列之外的所有列都是只读的。
当用户点击提交时,我希望它发布到包含多个历史记录的不同页面,每行一个。
然后,在下一页,我想通过每个数组,如:
foreach ($_POST['historik'] as $historikArray)
{
echo $historikArray;
当我执行上述操作时,输出似乎没问题 - 我看起来像以前表单中每行的数据数组。
但是,当我做这样的事情时:
foreach ($_POST['historik'] as $historikArray)
{
echo $historikArray[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
显然,我是为每一行发布一个字符串,而不是一个数组(?)
有人可以帮忙吗?另外,理想情况下我想使用关联数组,但在这种情况下我不知道如何...
答案 0 :(得分:0)
是。你的html创建了一个字符串数组而不是数组数组
$ _ POST ['historik']是一个数组
在for循环中,名为historikArray的变量是一个字符串。
尝试在$ _POST上执行print_r或var_dump以查看其中的内容。
答案 1 :(得分:0)
您确实在发帖子。你不能发布数组。您可以先将数组序列化为字符串,然后在帖子后对其进行反序列化。
变化:
<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];