Mi dite se c'è la differenza tra queste due righe?

Codice PHP:
foreach($array AS $key => $value)
{
   echo 
"$key$value";
}

while(list(
$key,$value) = each($array))
{
   echo 
"$key$value";

La prima funziona, la seconda no... in pratica se ho un array, nel secondo ciclo, mi stampa solo l'ultimo valore dell'array.
Ho fatto anche un print_r($array) prima di fare il ciclo, e i dati passati sono corretti.