删除会话数据不起作用

时间:2016-03-04 12:32:30

标签: php arrays session yii

我将session中的一些数据存储在某些action上。当user点击该链接时,会创建array arrays。现在,我正在尝试删除特定的array。它会被删除,刷新页面后会再次显示。

这就是我创建会话数组的方式:

    $arr = array('item_id' => $item->id, 'title' => $item->title, 'price' => $item->price, 'user_id' => $item->user_id, 'image_url' => $photo->image_url, 'type' => $item->type);
$_SESSION['cart'][$item->id] = $arr;

数组是这样的:

Array
(
    [103] => Array
        (
            [item_id] => 104
            [title] => Roll Paratha
            [price] => 25
            [user_id] => 10
            [image_url] => 3494655857Food-HD-Wallpaper-Download.jpg
            [type] => Photo
        )

    [104] => Array
        (
            [item_id] => 106
            [title] => Qeema Mattar
            [price] => 25
            [user_id] => 92
            [image_url] => 384899841160323-pakistan-pakistani-cultural-foods.jpg
            [type] => Photo
        )

)

我这样做是为了从会话中删除数组:

unset($_SESSION['cart'][103]);

这会删除它并在刷新时再次出现,任何想法?

1 个答案:

答案 0 :(得分:1)

您正在取消设置错误的变量。

如果您创建会话值如下:

$_SESSION['cart'][] = $arr;

然后PHP会将$ arr放入$_SESSION['cart'][0],因为它会分配一个自动递增的密钥。

所以你的会话数组看起来像这样:

Array
(
    [cart] => Array
        (
            [0] => Array
                (
                    [103] => item
                    [104] => item
                )

        )

)

如果您取消设置$_SESSION['cart'][0][103],您将获得所需的效果。

我的建议是以不同的方式分配,所以将你的作业更改为:

$_SESSION['cart'] = $arr