gia' segnalato almeno un paio di volte....
probabilmente tu passi l'array come facevo io.
$_SESSION = $array_tuo;
Pare che in questo modo $_SESSION prenda anche le caratteristiche di $array_tuo e perda le sue. Se dichiari globale $array_tuo e riprovi dovrebbe funzionare.
Personalmente ho risolto con un foreach e va bene. Non capisco perche' tu dica che passare i dati con il ciclo non funzioni.