[英]how do i reset the value of a single session array index in codeigniter?
使用用戶模型返回一個如下所示的數組:
$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',$user_data);
現在,如果我在另一個控制器上讓用戶更改他的頭像,
如何替換與此相關的會話變量?
像$this->session->set_userdata('user_data["avatar"]',$new_avatar);
就是行不通嗎?
謝謝您的幫助...
對於未設置的會話變量
$this->session->unset_userdata('avatar');
對於設置會話變量
$this->session->set_userdata('avatar', '/images/user144.jpg"');
通過查看您的代碼概述,我猜想最好的方法是取消設置數據並重新設置。
使用$ this-> session-> unset_userdata('thesessiontounset'); 然后將其設置為包含新信息和舊信息。
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);
第一控制人
$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();
這使您可以像使用$_SESION['user_data']['avatar'] = $avatar
一樣編輯數組中的值,僅“多”一行,並且僅使用CI庫。
像這樣使用
$this->session->set_userdata('session_var',"");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.