簡體   English   中英

如何在Codeigniter中重置單個會話數組索引的值?

[英]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);

可以在這里找到有關array_merge的更多詳細信息

第一控制人

$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM