Yii - манипулирование переменной sesssion

Я все еще новичок, когда дело доходит до использования YII, но я работал с переменными сессии в течение последних нескольких дней, и я не могу понять концепцию, лежащую в основе моей ошибки. Любой совет будет оценен.

Моя функция добавления до сих пор работает отлично, для моей текущей цели отслеживания последних 3 переменных, добавленных в мою переменную сеанса питания.

public function addSessionFavourite($pageId)
{
    $page = Page::model()->findByPk($pageId);
    $categoryName = $page->getCategoryNames();

    if($categoryName[0] == 'Nutrition')
    {
        if(!isset(Yii::app()->session['nutrition']))
        {
            Yii::app()->session['nutrition'] = array();
        }
        $nutrition = Yii::app()->session['nutrition'];
        array_unshift($nutrition, $pageId);
        array_splice($nutrition, 3);
        Yii::app()->session['nutrition'] = $nutrition;
    }

Кажется, моя функция удаления вообще не работает, независимо от того, что я пытаюсь с ней сделать. Причиной, по которой я переносил сессионный массив во временный массив, была попытка обойти «Если глобализированная переменная unset () внутри функции, уничтожается только локальная переменная. Переменная в вызывающей среде сохранит то же значение, что и перед вызовом unset (). " Но это был полный провал.

public function removeSessionFavourite($pageId)
{
    $page = Page::model()->findByPk($pageId);
    $categoryName = $page->getCategoryNames();

    if($categoryName[0] == 'Nutrition')
    {
        if(!isset(Yii::app()->session['nutrition']))
        {
            return true;
        }
        $nutritionArray = Yii::app()->session['nutrition'];
        unset($nutritionArray[$pageId]);
        Yii::app()->session['nutrition'] = $nutritionArray;
    }

Любой совет или толчок в правильном направлении будет оценен.

Ответы на вопрос(1)

Ваш ответ на вопрос