会话变量中的数组(Yii)

时间:2012-07-05 22:57:41

标签: php session yii

我正在尝试完成每次用户访问某个页面时为会话变量(即数组)添加值的函数。这是我的控制器代码:

public function actionPut($id)
    {
        $session=new CHttpSession;
        $session->open();
        if (empty($session['the_variable'])) {
            $session['the_variable'] = array($id);
        }
        else {
            $session['the_variable'][] = $id;
        }
        $session->close();
        $this->render('test', array('session'=>$session));
    }

但它不起作用。如果变量为空,则它仅存储第一次的信息。下次我访问该页面时,它不会为数组增加值。 我也尝试了push_array功能,但没有运气。 有什么问题?

2 个答案:

答案 0 :(得分:6)

尝试此解决方案。

public function actionPut($id)
{

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

答案 1 :(得分:0)

我认为您的问题是您自己开始/关闭会话。相反,你应该让Yii为你处理:

    public function actionPut($id)
    {
        $session=Yii::app()->session;
        
        if (empty($session['the_variable'])) {
            $session['the_variable'] = array($id);
        }
        else {
            $session['the_variable'][] = $id;
        }
        
        $this->render('test', array('session'=>$session));
    }

另外,不要自己关闭会话,但让Yii处理它。