Codeigniter - 在二维数组中取消设置会话

时间:2017-08-26 07:28:54

标签: php arrays codeigniter session

我创建了two-dimensional array会话。如果用户可以输入项目,并且当他/她点击ADD button时,该项目的array将插入名为item_names的会话中。现在,我正在尝试,只要用户点击unset上有delete button的某个项目,就无法unique id。我发现函数unset_userdata()已经不支持关联数组,正如我想要实现的那样。除此之外还有其他功能吗?

Controller.php这样

public function delete_item(){
    $app_no = $this->input->post('app_no');  // product id of item
    $items_session = $this->session->userdata('item_names');

     foreach ($items_session as $key => $value) {
        if($value['product_id'] == $app_no){
            $this->session->unset_userdata($items_session[$key][$app_no]); 
        }
    }
  }

数组结构

Array
   (
       [0] => Array
     (
         [product_id] => 201708010010
         [product_name] => LADDER BRICK
         [total_prod_price] => P50
         [requestQty] => 1
     )
   (

2 个答案:

答案 0 :(得分:2)

您无法在codeingiter的会话中直接取消设置多维数组的特定值。您必须将所有会话值转换为变量。取消设置特定值并再次在会话中设置变量,如下所示:


    $items_session = $this->session->userdata('item_names');
    unset($items_session[$key][$app_no]);
    $this->session->set_userdata('item_names',$items_session);

希望这会有所帮助。

答案 1 :(得分:0)

您必须使用unset转到常规PHP。

public function delete_item(){
    $app_no = $this->input->post('app_no');  // product id of item
    $items_session = $this->session->userdata('item_names');

     foreach ($items_session as $key => $value) {
        if($value['product_id'] == $app_no){
            unset($items_session[$key][$app_no]); 
        }
    }
  }