【问题标题】:Remove item from session info从会话信息中删除项目
【发布时间】:2013-03-19 18:51:58
【问题描述】:

我正在使用CodeIgniter 编写这个项目,您可以在其中添加和删除存储桶中的项目,例如网店。

我的会话类中有一个数组,我想做的是按 id 搜索元素并删除它们。

public function removeRow($id) {
    if ($id) {
        $bucket = $this->session->userdata('bucket');
        foreach ($bucket as $key => $value) {
            if ($value['id'] == $id) {
                unset($bucket[$key]);
            }
        }
        $this->session->set_userdata(array(
            'bucket' => $bucket
                )
        );
    }

session信息:

Array
(
    [session_id] => e0c6303a7c24a05436ef0abfe2424c44
    [ip_address] => 127.0.0.1
    [user_agent] => Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0
    [last_activity] => 1363718778
    [user_data] => 
    [a] => test
    [bucket] => Array
        (
            [0] => Array
                (
                    [0] => Array
                        (
                            [id] => 3
                            [name] => Maksas Frajus - Amžinybės glėbyje
                            [price] => 30.99
                        )

                )

            [1] => Array
                (
                    [0] => Array
                        (
                            [id] => 1
                            [name] => Maksas Frajus - Atėjūnas
                            [price] => 35.99
                        )

                )

            [2] => Array
                (
                    [0] => Array
                        (
                            [id] => 2
                            [name] => Maksas Frajus - Paprasti stebuklingi daiktai
                            [price] => 27.5
                        )

                )

        )

)

我收到此错误消息:

Message: Undefined index: id

我什至不知道我做错了什么。谁能解释一下?

【问题讨论】:

    标签: php arrays codeigniter session


    【解决方案1】:
    if ($value['id'] == $id) {
    

    应该是这样的:

    if ($value[0]['id'] == $id) {
    

    你有一个嵌套数组,所以你需要更深一层。


    以下评论的示例数组:

    [bucket] => Array
        (
            [3] => Array
                (
                    [id] => 3
                    [name] => Maksas Frajus - Amžinybės glėbyje
                    [price] => 30.99
                )
    
            [1] => Array
                (
                    [id] => 1
                    [name] => Maksas Frajus - Atėjūnas
                    [price] => 35.99
                )
    
            [2] => Array
                (
                    [id] => 2
                    [name] => Maksas Frajus - Paprasti stebuklingi daiktai
                    [price] => 27.5
                )
    
        )
    

    【讨论】:

    • 看看你的数组,我不明白为什么你有额外的级别。你的数组应该是我上面显示的格式。然后做一个简单的if (isset($bucket[$id])) {unset($bucket[$id]);} 就足够了,不需要遍历数组。
    猜你喜欢
    • 2011-04-02
    • 2016-11-28
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    相关资源
    最近更新 更多