Yii - Manipulando una variable de sesión

Todavía soy un novato cuando se trata de usar YII, pero he estado trabajando con variables de sesión durante los últimos días, y parece que no puedo entender el concepto detrás de mi error. Cualquier consejo será apreciado.

Mi función de agregar funciona perfectamente hasta ahora, con el propósito actual de hacer un seguimiento de las últimas 3 variables agregadas a la nutrición de mi variable de sesión.

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

Mi función de eliminación no parece funcionar en absoluto, no importa lo que intente hacer con ella. La razón por la que estoy transfiriendo la matriz de la sesión a una matriz temporal fue para tratar de evitar el problema "Si una variable globalizada no está establecida () dentro de una función, solo se destruye la variable local. La variable en el entorno de llamada mantendrá la Se llamó el mismo valor que antes de unset () ". Pero fue un fracaso total.

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

Cualquier consejo o empuje hacia la dirección correcta será apreciado.

Respuestas a la pregunta(1)

Su respuesta a la pregunta