2012-01-13 39 views
0

我似乎无法让CI的会话库以我想要的方式工作。本质上,我在会话中存储2种不同类型的数据。这两个类别中的数据可能包含相同的值。现在,我尝试向会话添加一个key => value对,因为它只允许1个key =>值对与该数组关联。每次我发布帖子时都会覆盖自己。我是否需要为CodeIgniter编写自定义会话类?

$arr = array(
    'favorite_products' => array(), 
    'viewed_products' => array() 
    ); 


$arr["favorite_products"][] = $fav_id; 


$this->session->set_userdata($arr); 

这是阵列的外观,当我print_r它:

Array ([favorite_products] => Array ([4f1066c2b7fff] => 1648406) [viewed_products] => Array ()) 

难道我做错了什么,或者这只是方式CI的会话库的工作方式?

+0

您的预期产出是什么? – jondavidjohn 2012-01-13 17:24:05

+0

Array([favorite_products] => Array([0] => 1648406 [1] => 0000000)用户可以拥有多少种fav产品没有限制 – 2012-01-13 17:24:43

+0

添加另一个'$ arr [“favorite_products”] [] = 0333'并更新你的输出,看起来像你仍然在显示'uniqueid()'输出 – jondavidjohn 2012-01-13 17:26:18

回答

1

确保你摧毁尝试之间的会话,但是这个代码应该只是罚款...

$arr = array(
    'favorite_products' => array(), 
    'viewed_products' => array() 
    ); 


$arr["favorite_products"][] = $fav_id; 
$arr["favorite_products"][] = 033333; // another id 


$this->session->set_userdata($arr); 

应该给你...

Array ( 
    [favorite_products] => Array ( 
     [0] => 1648406, 
     [1] => 033333 
    ), 
    [viewed_products] => Array() 
) 

如果你正在尝试做的这请求之间...

// if it doesn't already exist in the session, create an empty array. 
if(! ($favorite_products = $this->session->get_userdata("favorite_products"))) 
{ 
    $favorite_products = array(); 
} 

$favorite_products[] = "new id or info"; 

$this->session->set_userdata("favorite_products", $favorite_products); 
相关问题