Tienes que tratar tu array de sesión como un array que es ...
En principio .. debes usar comillas en tus indices del array ..
No sé si "autorizado" con ese valor en "frase" (podrías optimizar usando como "flag" ... 1/0 o true/false y tratar el tema con lógica para mostrar tu frase .. ) es global o pertenece a cada "materia" .. Es decir .. ¿cada materia puede estar autorizado o no? .. o es un concepto "global" que pertenece a todas las materias. Te hago el comentario para enfocar mejor el array que debes crear ..
Si fuese que cada materia tiene su propiedad "autorizado" .. debería ser:
Código PHP:
<?
$_SESSION['carrito']['materias'][]=$materia;
$_SESSION['carrito']['autoriza'][]="Autorizado";
Y cuando leas ese "carrito" .. (array) usa un bucle for() con mismo indice para todos sus valores finales:
Código PHP:
<?
for($x=0; $x< count($_SESSION['carrito']['materias']); $x++){
echo $_SESSION['carrito']['materias'][$x]."<br>";
echo $_SESSION['carrito']['autoriza'][$x]."<br><br>";
}
?>
Un saludo,