Php Codeigniter-二维数组中的未设置会话
我创建了会话的二维数组。用户可以在其中输入项目,当他/她单击Php Codeigniter-二维数组中的未设置会话,php,arrays,codeigniter,session,Php,Arrays,Codeigniter,Session,我创建了会话的二维数组。用户可以在其中输入项目,当他/她单击添加按钮时,该项目的数组将插入名为项目名称的会话中。现在我正在尝试,每当用户单击带有唯一id的删除按钮时,我都无法取消设置某个项目。我发现函数unset\u userdata()已经不支持关联数组了,这正是我想要实现的。除此之外还有其他功能吗 Controller.php public function delete_item(){ $app_no = $this->input->post('app_no'); /
添加按钮时,该项目的数组
将插入名为项目名称
的会话中。现在我正在尝试,每当用户单击带有唯一id的删除按钮时,我都无法取消设置某个项目。我发现函数unset\u 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
)
(
您将不得不使用常规PHP
不能在codeingiter会话中直接取消多维数组的特定值。您必须将所有会话值设置为变量。取消设置特定值,然后在会话中再次设置变量,如下所示:
$items_session = $this->session->userdata('item_names');
unset($items_session[$key][$app_no]);
$this->session->set_userdata('item_names',$items_session);
$items\u session=$this->session->userdata('item\u name');
未设置($items_session[$key][$app_no]);
$this->session->set_userdata($items\u name',$items\u session);
希望这会有所帮助。显示您的阵列structure@Irfan更新的PostThank没有弄明白,我已经在我的添加按钮功能中完成了!直接操作$\u会话变量是否更好/更快?在这种情况下,我总是这样做,以避免每次都必须重新加载会话数据。我不确定这对内存的影响有多大。是的,您可以直接编辑$\u会话变量。若您在codeigniter的会话类中检查unset_userdata()函数,它在foreach循环中也会执行相同的操作。所以你可以做相应的事情。
$items_session = $this->session->userdata('item_names');
unset($items_session[$key][$app_no]);
$this->session->set_userdata('item_names',$items_session);