Forum und email

Variable Variablen

Manchmal ist es komfortabel, variable Variablen-Bezeichner zu benutzen. Das bedeutet, einen Variablen-Namen zu setzen und dynamisch zu gebrauchen. Eine normale Variable wird wie folgt gebildet:

<?php
$a 
"Hallo";
?>

Eine variable Variable nimmt den Wert einer Variablen und behandelt ihn als Bezeichner der Variablen. Im obigen Beispiel kann Hallo als Variablen-Name gebraucht werden, indem man zwei $-Zeichen benutzt, also schreibt:

<?php
$$a "Welt";
?>

Nun existieren in der PHP-Symbol-Struktur zwei definierte und gespeicherte Variablen: $a mit dem Inhalt "Hallo" und $Hallo mit dem Inhalt "Welt". Deshalb wird die Anweisung

<?php
echo "$a ${$a}";
?>

zur genau gleichen Ausgabe führen wie:

<?php
echo "$a $Hallo";
?>

also zu: Hallo Welt.

Wenn Sie variable Variablen mit Arrays verwenden, müssen Sie eine Doppeldeutigkeit beachten. Wenn Sie nämlich $$a[1] schreiben, dann muss der Parser wissen, ob Sie $a[1] als Variable oder $$a als Variable und dann [1] als Index dieser Variablen verwenden wollen bzw. gemeint haben. Die Syntax zur Lösung dieser Doppeldeutigkeit: Verwenden Sie im ersten Fall ${$a[1]} und im zweiten Fall ${$a}[1].

Warnung

Bitte beachten Sie, dass variable Variablen nicht bei Superglobalen Arrays verwendet werden können. Das bedeutet, etwas wie ${$_GET} ist nicht möglich. Wenn Sie nach einer Möglichkeit suchen, die Verfügbarkeit von Superglobalen und den alten HTTP_*_VARS zu handhaben, können Sie das mit referenzieren versuchen.