Im ersten Fall ergibt sich $key[1], im zweiten $value. Die Lösung ist die Verwendung geschweifter Klammern: im ersten Fall sollten Sie ${$a}[1] schreiben, im zweiten ${$a[1]}.
Ein Anwendungsfall: Umwandlung eines assoziativen Arrays in einzelne Variablen:
<?php
$a_person = array(
'vorname' => 'Max',
'nachname' => 'Mustermann'
);
while (list($key, $val) = each($a_person)) {
$$key = $val;
}
?>
Im Ergebnis haben wir dann eine Variable $vorname mit dem Wert 'Max' und eine Variable $nachname mit dem Wert 'Mustermann'.