【问题标题】:Array in session variable (Yii)会话变量中的数组 (Yii)
【发布时间】:2012-07-05 22:57:40
【问题描述】:

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

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 功能,但没有运气。 怎么了?

【问题讨论】:

  • 您有一个 $session 对象并试图将其作为数组引用? $session->the_variable
  • 您的构造函数缺少括号。
  • 不明白。请解释一下。

标签: php session yii


【解决方案1】:

试试这个解决方案。

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));
}

【讨论】:

  • 谢谢,这已经奏效了。但是,你能解释一下这几行吗:$myarr = $session['the_variable']; $myarr[] = $id; $session['the_variable'] = $myarr;
  • 我没有实际的概念,但 yii 不适用于 Yii::app()->session[][] = $val;
  • 所以是 Yii 本身的问题?
  • 我不能说这是 yii 的问题,因为 session 是一个使用类 CHttpSession 的组件,可能是 yii 以不允许数组赋值的方式处理它的组件。跨度>
  • 好的,但我还是不明白上面的例子是如何工作的。你能解释一下吗?
【解决方案2】:

我认为您的问题是您自己开始/关闭会话。相反,你应该让 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 来处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    相关资源
    最近更新 更多