Podria ser que $_SESSION['usuario']['carrito'] no esta definida o no es array?
Cita: Manual de PHP para count()
count()
quizá devuelve 0 si la variable no está establecida, pero también devolverá 0 si la variable ha sido iniciada con un array vacío. Use isset() para probar si la variable está establecida.
Entonces, si aun no la has creado (o no es array) podria pasar que al tratar de agregar un elemento sea cuando obtienes el error.
Solucion:
Código PHP:
Ver originalif( ! isset($_SESSION['usuario']['carrito']) || ! is_array($_SESSION['usuario']['carrito'])) { $_SESSION['usuario']['carrito'] = array(); }
// Aqui continuas con lo que estas haciendo normalmente