试图发布数组会引起注意:未初始化的字符串偏移量


Trying to post array causes notice: Uninitialized string offset

我有下面的表格(摘录)

 <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以查看其中的内容。