2014-06-30 44 views
1

我的产品ID以阵列形式存储在'pid'会话中。现在,我想删除它的一个值,并且该值来自$ id变量。我如何删除它的一个值?如何删除ci中会话中存储的数组的值?

我尝试像下面那样取消设置,但它不起作用。

$this->session->unset_userdata('pid', $id); 
+0

[阅读...](http://ellislab.com/forums/viewthread/242318 /) – Darren

+0

阅读本文.. http://ellislab.com/codeigniter/user-guide/libraries/sessions.html – Hardy

回答

2
//first get whole array in session sored as pid key 
    $ses_array = $this->session->userdata('pid'); 
//remove value you want to delete means $id 
    if(($key = array_search($id, $ses_array)) !== false) { 
      unset($ses_array[$key]); 
    } 
//again set this array to session 
$this->session->set_userdata('pid',$ses_array) 
    print_r($this->session->userdata('pid')); 
0

CI session unset_userdata()方法将不支持多级数组内的未设置值。

PS:您可以访问Sessionuserdata变量,它的默认public

尝试这种方式

$this->session->set_userdata(array('pid' => array(1,2,3,4,5,6))); 
unset($this->session->userdata['pid'][4]); //your id key ['pid'][$id] 
print_r($this->session->all_userdata());