2013-03-19 86 views
1

我正在使用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 

,我甚至不知道我在做什么错。有人可以解释吗?

回答

2
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 
      ) 

    ) 
+0

多么愚蠢我 – Benedictus 2013-03-19 19:05:35

+0

的看你的阵列,我不明白为什么你有额外的水平。您的数组应该采用上面显示的格式。然后做一个简单的'if(isset($ bucket [$ id])){unset($ bucket [$ id]);}'就足够了,而不需要遍历数组。 – 2013-03-19 19:14:48