2013-10-11 22 views
0

Iam嘗試使用以下代碼從Yii中的會話數組中移除元素。
對CHttpSession的重載元素的間接修改沒有效果

$session = Yii::app()->session; 
     $arraylen = count($session['the_variable']); 
     for ($i = 0; $i < $arraylen; $i++) 
     { 
      if ($session['the_variable'][$i] == $providerId) 
      { 
       unset($session['the_variable'][$i]); 
      } 
     } 

但它示出了誤差CHttpSession的過載元件的

間接修改沒有影響

我嘗試使用array_splice($session['the_variable'],$i,$i-1);代替未固化。然後它也顯示相同的錯誤。是否有任何方法從會話數組中刪除元素?使用2個不同的控制器動作插入會話數組並從會話數組中刪除元素。
插入蔭使用的代碼

$session = Yii::app()->session; 
     if (!isset($session['the_variable']) || count($session['the_variable']) == 0) 
     { 
      $session['the_variable'] = array($providerId); 
     } else 
     { 
      $myarr = $session['the_variable']; 
      $myarr[] = $providerId; 
      $session['the_variable'] = $myarr; 
     } 
     array('session' => $session); 

插入運作良好,但刪除不工作。

回答

1
$session = Yii::app()->session; 
    $vars = $session['the_variable']; 
    $arraylen = count($vars); 
    for ($i = 0; $i < $arraylen; $i++) 
    { 
     if ($vars[$i] == $providerId) 
     { 
      unset($vars[$i]); 
     } 
    } 
    $vars = array_values($vars); 
    $session['the_variable'] = $vars; 

現在它的回覆工作以及..謝謝.. :)

0

您沒有設置這樣的不能未設置一多維數組會議,我不知道爲什麼,但試試這個(我還簡化了你的代碼):

 $session = Yii::app()->session; 
     $key = array_search($providerId,$session['the_variable']); 
     $session->remove($key); 
0

簡單的東西:

Yii::app()->session->remove('the_variable'); 
or 
$session = Yii::app()->session; 
$session->remove('the_variable'); 
0

Yii有一個內置的機制來處理這個乾淨。遵守慣例並遵循正確的做法:

Yii::app()->session->remove('the_variable'); 
or 
$session = Yii::app()->session; 
$session->remove('the_variable'); 
相關問題