Puedes hacer una inicialización de la variable:
 Código PHP:
    if(!isset($_SESSION['carrito'])){
   $_SESSION['carrito'] = array();
} 
    
  O sea, si no existe la variable (pasa la primera vez que se ejecuta), la inicializa en un array vacío.
De esa manera el foreach lo reconocerá como array y desaparecerá el error. 
Saludos