从foreach循环中删除会话数组变量

时间:2012-11-28 12:00:06

标签: php mysql

我试图写一个代码,我可以从会话数组中删除变量

这是我的代码

的index.php

    <?php
        if(isset($_POST['add']))
            {
            $_SESSION['temp'][]=$_POST['rfield'];   
            $_SESSION['scol_id'][]=$_POST['scol_id'];  

            }
       if(isset($_SESSION['temp']))
        {
            ?>
            <table width="100%" border="0" class = "table">
            <?php
            $x=0;
           foreach($_SESSION['temp'] as $temp)
            { 
                ?>
        <tr><td>
        <?php echo $temp; ?> 
        </td>
        <td><a href="removerf.php?id=<?php echo $x; ?>" rel="tooltip" title="remove" class="link"><i class="icon-remove"></i></a></td>
        </tr>
        <?php
            $x++;
            }
        ?>
        </table>
        <?php
        }
        ?>                          

removerf.php

    <?php
    session_start();

    unset($_SESSION['temp'][$_GET['id']]);

    header("location:reportmaker.php");

    ?>

我的代码的问题是,有时它可以删除变量,有时它不会

由于某些奇怪的原因,它也无法删除数组的第一个变量

我错过了什么吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

我不会依赖$ x是正确的数组键。你可以尝试一下吗?

<?php
if(isset($_POST['add']))
{
    $_SESSION['temp'][]=$_POST['rfield'];   
    $_SESSION['scol_id'][]=$_POST['scol_id'];  
}
if(isset($_SESSION['temp']))
{
    ?>
    <table width="100%" border="0" class = "table">
    <?php
    foreach($_SESSION['temp'] as $key => $temp)
    { 
    ?>
        <tr><td>
        <?php echo $temp; ?> 
        </td>
        <td><a href="removerf.php?id=<?php echo $key; ?>" rel="tooltip" title="remove" class="link"><i class="icon-remove"></i></a></td>
        </tr>
    <?php
    }
?>
</table>
<?php
}
?>  

每当从temp数组中删除一个键时,依赖$ x作为数组键将导致问题。如果您的临时数组是:

array(
    0 => 'foo',
    1 => 'bar'
)

并且从数组中删除0,即使数组键0不存在,$ x仍将以0开始。即你正在对数组中当前存在的数组键做出假设。

关于foreach:

foreach($myArray as $arrayKey => $arrayValue){
     //$arrayKey is the array key of the element / index
     //$arrayValue is the actual element that is stored.
}