2014-04-24 48 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()但我更喜歡以上。現在,使用更新的數據重新設置會話。