studyklar
IProg · Skript 5 · Abschnitt 5

Variable Variablen und variable Funktionen in PHP

In PHP darf der Name einer Variablen selbst in einer Variablen stehen. Dann steht erst beim Ausführen fest, welche Variable gemeint ist. Hier steht, wie man $$a liest, wo Klammern nötig sind und wie das mit Funktionen geht. Mit Weiter geht es Schritt für Schritt voran.

Worum es geht

Skript 05, Folien 16–18: variable Variablen, Klammerung, variable Funktionen.

Was bedeutet $$a? Wann braucht man geschweifte Klammern, und was gilt in einem Text in doppelten Anführungszeichen? Und wie ruft man eine Funktion auf, deren Name in einer Variablen steht?

Merke: $$a liest man von innen nach außen: erst $a auswerten, dann ist das Ergebnis der Name der gemeinten Variablen.

So gehen wir vor:

  1. Mit $$a eine Variable anlegen und lesen.
  2. Klammern gegen Mehrdeutigkeit bei Arrays.
  3. Variable Variablen in einem Text.
  4. Variable Funktionen.
  5. Eine Klausurfrage dazu.

$$a legt $hello an

Skript · Folie 16

PHP unterstützt variable Variablennamen; der Name der Variablen wird dadurch erst zur Laufzeit bestimmt.

$a  = "hello";$$a = "world";

Zeile 1 ist eine gewöhnliche Zuweisung: $a enthält den Text hello.

In Zeile 2 steht $$a, eine variable Variable. PHP wertet zuerst das innere $a aus und erhält hello. Das äußere $ macht daraus den Variablennamen $hello.

Zeile 2 wirkt also wie $hello = "world";. Es entsteht eine neue Variable, obwohl ihr Name nirgends im Code steht.

Das braucht man, wenn der Name erst beim Ausführen bekannt ist, etwa wenn die Felder eines Formulars in einer Schleife zu Variablen gleichen Namens werden. In der Klausur wird vor allem gefragt, was ein solches Stück ausgibt.

$$a liest $hello

$a  = "hello";$$a = "world";$b = $a . ' ' . $hello;echo "$b";   // Ausgabe: »hello world«
hello world
$a     = "hello";$hello = "world";$b = $a . ' ' . $$a;echo "$b";   // Ausgabe: »hello world«
hello world

Im ersten Beispiel holt Zeile 3 den Wert über den echten Namen $hello. Das zweite Beispiel macht es andersherum: $hello wird gewöhnlich angelegt, und Zeile 3 liest ihn über $$a.

$$a ist wieder $hello, also world. Der Punkt . hängt Texte aneinander: hello, ein Leerzeichen, world. Beide Beispiele geben hello world aus.

Noch 8 Schritte bis zum Ergebnis
Den ganzen Lösungsweg sehen Studierende und Lehrende der HS KL. Registriere dich mit deiner Adresse @stud.hs-kl.de oder @hs-kl.de, dann geht es hier direkt weiter.

Abbildung 1Variable Variablen

$$a anlegen und lesen

$a  = "hello";$$a = "world";$b = $a . ' ' . $hello;echo "$b";   // Ausgabe: »hello world«
LegendeZeilen des SchrittsDas Beispiel von Folie 16: $$a legt eine Variable an, deren Name in $a steht.