Php 如何在codeigniter中重置单个会话数组索引的值?
使用返回如下数组的用户模型:Php 如何在codeigniter中重置单个会话数组索引的值?,php,codeigniter,session,Php,Codeigniter,Session,使用返回如下数组的用户模型: $user_data['display_name'] = "John Doe"; $user_data['avatar'] = ./images/user144.jpg"; 我使用$this->session->set_userdata'user_data'、$user_data创建会话 现在如果在另一个控制器上,我让用户更改他的化身 如何替换与之关联的会话变量 比如$this->session->set_userdata'user_data[avatar],$
$user_data['display_name'] = "John Doe";
$user_data['avatar'] = ./images/user144.jpg";
我使用$this->session->set_userdata'user_data'、$user_data创建会话
现在如果在另一个控制器上,我让用户更改他的化身
如何替换与之关联的会话变量
比如$this->session->set_userdata'user_data[avatar],$new_avatar;
就是不能正常工作
hee感谢您的帮助…通过查看代码概述,我猜最好的方法是取消数据设置并重置它 使用$this->session->unset_userdata'thesessiontounset';
然后使用新信息和旧信息对其进行备份。会话->设置用户数据功能一次只允许您修改一个键。在您的情况下,键引用一个数组,因此您尝试执行的操作不可能以您尝试执行的方式执行 当我更新我的会话时,我运行类似这样的操作
//Create or setup the array of the fields you want to update.
$newFields = array('avatar' = > 'image01.png');
//Check to see if the session is currently populated.
if (!is_array($this->session->userdata('abc'))){
//...and if it's not - set it to a blank array
$this->session->set_userdata('abc',array());
}
//Retrieve the existing session data
$existing_session = $this->session->userdata('abc');
//Merge the existing data with the new data
$combined_data = array_merge($this->session->userdata('abc'), $newFields);
//update the session
$this->session->set_userdata('abc',$combined_data);
第一控制器
$user_data['display_name'] = "John Doe";
$user_data['avatar'] = "./images/user144.jpg";
$this->session->set_userdata('user_data',$user_data);
$user_data = $this->session->userdata('user_data');
$user_data['avatar'] = $new_avatar;
$this->session->set_userdata('user_data', $new_avatar);
第二控制器
$user_data['display_name'] = "John Doe";
$user_data['avatar'] = "./images/user144.jpg";
$this->session->set_userdata('user_data',$user_data);
$user_data = $this->session->userdata('user_data');
$user_data['avatar'] = $new_avatar;
$this->session->set_userdata('user_data', $new_avatar);
虽然有点晚,但可能对其他人有用,这似乎有效:
$this->session->userdata['user_data']['avatar'] = $new_avatar;
$this->session->userdata['other_data']['other'] = $other;
$this->session->sess_write();
这允许您编辑数组中的值,就像您使用$\u SESION['user\u data']['avatar']=$avatar所做的一样,只使用一个额外的行并且只使用CI库。对于未设置的会话变量
$this->session->unset_userdata('avatar');
$this->session->set_userdata('avatar', '/images/user144.jpg"');
用于设置会话变量
$this->session->unset_userdata('avatar');
$this->session->set_userdata('avatar', '/images/user144.jpg"');
像这样使用
$this->session->set_userdata('session_var',"");