正在会话中存储阵列


Storing array in sessions

我试图将一些数据作为数组存储在会话中,但该函数似乎不起作用。它不会引发任何错误,但每次我向其中添加数据时,它都会覆盖以前的数据。我正在使用yii,这是动作

public function actionStoreProducts($name)
        {
            $name=trim(strip_tags($name));
            if(!empty($name))
            {
                if(!isset(Yii::app()->session['_products']))
                {
                    Yii::app()->session['_products']=array($name);  
                    echo 'added';
            }
            else
            {
                $myProducts = Yii::app()->session['_products'];
                $myProducts[] = $name;
                Yii::app()->session['products'] = $myProducts;
                echo 'added';
            }
        }

有人能建议我怎样才能达到预期的效果吗?

请这样更正您的代码。

public function actionStoreProducts($name) {
        $name = trim(strip_tags($name));
        if (!empty($name)) {
            if (!isset(Yii::app()->session['_products'])) {
                Yii::app()->session['_products'] = array($name);
                echo 'added';
            } else {
                $myProducts = Yii::app()->session['_products'];
                $myProducts[] = $name;
                Yii::app()->session['_products'] = $myProducts;
                echo print_r(Yii::app()->session['_products']);
                echo 'added';
            }
        }
    }

会话属性只读我认为正确的方案是:

function actionStoreProducts($name) {
    $session = new CHttpSession;               //add this line
    $session->open();                          //add this line
    $name = trim(strip_tags($name));
    if (!empty($name)) {
        if (!isset(Yii::app()->session['_products'])) {
            $session->add('_products', array($name));   //replace this line
            echo 'added';
        } else {
            $myProducts = Yii::app()->session['_products'];
            $myProducts[] = $name;
            $session->add('_products', $myProducts);    //replace this line
            echo 'added';
        }
    }
}

首先将一个变量放入$session['somevalue'],然后放入数组变量中,像IT:-一样使用

    $session = new CHttpSession;
    $session->open();
    $myval = $session['somevalue'];
    $myval[] = $_POST['level'];
    $session['somevalue'] = $myval;