Codeigniter将新项添加到当前会话userdata数组

时间:2014-04-24 13:56:51

标签: php arrays codeigniter

所以我有这个数组:

$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 );

我想在该数组中添加一个新项目,因此更新的userdata数组将如下所示:

$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 个答案:

答案 0 :(得分:4)

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

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

在这里,我们首先取出数组中的current session items,将另一个项目添加到数组中,您可以执行array_push()但我更喜欢上述内容。现在,使用更新的数据设置会话。

答案 1 :(得分:2)

来自ellislab

  

添加自定义会话数据

     

会话数组的一个有用方面是您可以向其添加自己的数据,并将其存储在用户的cookie中。你为什么想做这个?这是一个例子:

     

让我们说某位特定用户登录您的网站。经过身份验证后,您可以将他们的用户名和电子邮件地址添加到会话cookie中,使您可以全局使用这些数据,而无需在需要时运行数据库查询。

     

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

     

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

$newdata = array(
   'username'  => 'johndoe',
   'email'     => 'johndoe@some-site.com',
   'logged_in' => TRUE
);
$this->session->set_userdata($newdata);
  

如果要一次添加一个userdata值,set_userdata()也支持这种语法。

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

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