使用返回如下所示数组的用户模型:
$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);
只是不能正常工作?
答案 0 :(得分:0)
通过查看代码概述,我猜测解决此问题的最佳方法是取消设置数据并重置它。
使用$ this-> session-> unset_userdata('thesessiontounset'); 然后使用新信息将其重新设置。
答案 1 :(得分:0)
session-> set_userdata()函数只允许您一次修改一个键。在你的情况下,键指的是一个数组,所以你尝试做的事情是不可能的。
当我更新会话时,我会运行类似的东西。
//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);
答案 2 :(得分:0)
第一个控制器
$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);
答案 3 :(得分:0)
有点晚了,但它可能对其他人有用,这似乎有效:
$this->session->userdata['user_data']['avatar'] = $new_avatar;
$this->session->userdata['other_data']['other'] = $other;
$this->session->sess_write();
这允许您编辑数组中的值,就像使用$_SESION['user_data']['avatar'] = $avatar
一样,只使用一行,只使用CI库。
答案 4 :(得分:0)
对于Unset Session变量
$this->session->unset_userdata('avatar');
对于Set Session变量
$this->session->set_userdata('avatar', '/images/user144.jpg"');
答案 5 :(得分:0)
像这样使用
$this->session->set_userdata('session_var',"");