2014-04-24 42 views
1

所以我有此数组:笨添加新项当前会话用户数据阵列

$data = array(
    'item_1' => $this->input->post('item_1'), 
    'item_2' => $this->input->post('item_2'), 
    'item_3' => $this->input->post('item_3') 
); 

$this->session->set_userdata('items', $data); 

而且我想一个新的项目添加到该数组,所以用户数据的更新的阵列将是这样的:

$data = array(
     'item_1' => $this->input->post('item_1'), 
     'item_2' => $this->input->post('item_2'), 
     'item_3' => $this->input->post('item_3'), 
     'item_4' => $this->input->post('item_4') 
); 

$this->session->set_userdata('items', $data); 

那怎么办,谢谢

回答

2

得到这个从ellislab

添加自定义的Session数据

session数组的一个有用的方面是,你可以添加你自己的数据,它就会被保存在用户的cookie。你为什么想做这个?这里有一个例子:

让我们说一个特定的用户登录到您的网站。一旦通过身份验证,您就可以将他们的用户名和电子邮件地址添加到会话cookie中,从而使您无需在需要时运行数据库查询即可在全球范围内使用这些数据。

要将数据添加到会话数组,需要将包含新数据的数组传递给此函数: $ this-> session-> set_userdata($ array);

其中$ array是包含新数据的关联数组。这里有一个例子:

$newdata = array(
    'username' => 'johndoe', 
    'email'  => '[email protected]', 
    'logged_in' => TRUE 
); 
$this->session->set_userdata($newdata); 

如果你想一次添加一个用户数据,set_userdata()也支持这一语法。

$this->session->set_userdata('some_name', 'some_value'); 

因此,在本质,你应该能够通过使用$this->session->set_userdata("item_4", "item_4");$this->session->set_userdata($newdata)如果要添加多个项目创建要添加,然后将其添加到会话中的项目。

3

按照以下步骤将数据添加到当前会话:

$data   = $this->session->userdata('items'); 
$data['item_4'] = $this->input->post('item_4'); 
$this->session->set_userdata('items', $data); 

在这里,我们先取出current session items在数组中,添加另一个项目到阵列中,你可以做一个array_push()但我更喜欢以上。现在,使用更新的数据重新设置会话。