尝试发布数组会导致通知:未初始化的字符串偏移量

时间:2014-10-11 14:56:55

标签: php arrays

我有以下表格(摘录)

 <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

显然,我是为每一行发布一个字符串,而不是一个数组(?)

有人可以帮忙吗?另外,理想情况下我想使用关联数组,但在这种情况下我不知道如何...

2 个答案:

答案 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];