## Grundlegendes

Variablen werden in PHP durch ein Dollar-Zeichen ($) gefolgt vom Namen der Variable dargestellt. Bei Variablennamen wird zwischen Groß- und Kleinschreibung unterschieden (case-sensitive).

Ein gültiger Variablenname beginnt mit einem Buchstaben (`A-Z`, `a-z` oder die Bytes von 128 bis 255) oder einem Unterstrich ("_"), gefolgt von einer beliebigen Anzahl von Buchstaben, Zahlen oder Unterstrichen. Als regulärer Ausdruck (Regular Expression) würde das wie folgt ausgedrückt: `^[a-zA-Z_\x80-\xff][a-zA-Z0-9_\x80-\xff]*$`

> Hinweis: PHP unterstützt keine Unicode-Variablennamen, aber einige Zeichenkodierungen (z. B. UTF-8) kodieren Zeichen so, dass alle Bytes eines Multi-Byte-Zeichens in den erlaubten Bereich fallen und somit einen gültigen Variablennamen darstellen.

> Hinweis: `$this` ist eine spezielle Variable, die nicht geändert werden kann. Vor PHP 7.1.0 war die indirekte Zuweisung, z. B. durch die Verwendung von variable Variablen, möglich.

Tipp

Siehe auch Userland-Namensregeln.

Beispiel #1 Gültige Variablennamen

    <?php
    $var = "du";
    $Var = "ich";
    echo "$var, $Var";       // gibt "du, ich" aus

    $_4site = 'noch nicht';  // gültig, da Unterstrich am Anfang
    $täbyte = 'irgendwas';   // gültig, da 'ä' dem (Erweiterten) ASCII-Wert 228 entspricht
    ?>

Beispiel #2 Ungültige Variablennamen

    <?php
    $4site = 'noch nicht';     // ungültig, da Anfang eine Zahl

PHP akzeptiert eine Folge von beliebigen Bytes als Variablennamen. Auf Variablennamen, die nicht den oben genannten Benennungsregeln entsprechen, kann nur dynamisch zur Laufzeit zugegriffen werden. Siehe variable Variablen für Informationen, wie man auf sie zugreifen kann.

Beispiel #3 Zugriff auf unklare Variablennamen

    <?php
    ${'ungueltiger-name'} = 'bar';
    $name = 'ungueltiger-name';
    echo ${'ungueltiger-name'}, " ", $$name;
    ?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

    bar bar

Standardmäßig wird Variablen immer ein Wert zugewiesen. Das heißt, wenn einer Variablen ein Ausdruck zugewiesen wird, wird der gesamte Inhalt des Originalausdrucks in die Zielvariable kopiert. Das bedeutet zum Beispiel, dass nach der Zuweisung des Wertes einer Variablen an eine andere die Änderung einer der Variablen keinen Einfluss auf die andere hat. Für weitere Informationen zu dieser Art der Zuordnung lesen Sie bitte das Kapitel unter Expressions / Ausdrücke.

PHP bietet eine andere Möglichkeit der Wertzuweisung bei Variablen: Zuweisung durch Referenzierung. Das bedeutet, dass der Wert der neuen Variablen eine Referenz zur Ursprungs-Variablen darstellt (mit anderen Worten: Der Wert ist ein Alias bzw. Zeiger auf den Inhalt der Ursprungsvariablen). Änderungen der neuen Variablen ändern auch deren Ursprungs-Variable und umgekehrt.

Für die Zuweisung per Referenz müssen Sie der Ursprungsvariablen, die Sie einer anderen Variablen zuweisen wollen, lediglich ein kaufmännisches Und (&) voranstellen. Das folgende Code-Schnipsel wird zweimal '`Ich heiße Bob`' ausgeben:

    <?php
    $foo = 'Bob';             // 'Bob' der Variablen $foo zuweisen.
    $bar = &$foo;             // $foo per $bar referenzieren.
    $bar = "Ich heiße $bar";  // $bar verändern...
    echo $bar;
    echo $foo;                 // $foo wurde ebenfalls verändert.
    ?>

Zu beachten ist, dass nur Variablen referenziert werden können.

    <?php
    $foo = 25;
    $bar = &$foo;      // Gültige Zuweisung.
    $bar = &(24 * 7);  // Ungültig, da ein unbenannter Ausdruck referenziert wird.

    function test()
    {
        return 25;
    }

    $bar = &test();    // Ungültig, da test() keine Variable per Referenz zurückgibt.
    ?>

Es ist in PHP nicht notwendig, Variablen zu deklarieren, aber es wird empfohlen. Der Versuch, auf eine undefinierte Variable zuzugreifen, führt zu einem Fehler der Stufe `E_WARNING` (vor PHP 8.0.0, `E_NOTICE`). Eine undefinierte Variable hat den Standardwert `null`. Um zu prüfen, ob eine Variable bereits initialisiert wurde, kann das Sprachkonstrukt isset() verwendet werden.

Beispiel #4 Vorgabewert einer nicht initialisierten Variable

    <?php
    // Nicht gesetzte UND nicht referenzierte (kein Verwendungskontext) Variable.
    var_dump($unset_var);
    ?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

    Warning: Undefined variable $unset_var in ...
    NULL

PHP erlaubt die Autovivifikation von Arrays (automatische Erstellung neuer Arrays) aus einer undefinierten Variable. Das Anhängen eines Elements an eine undefinierte Variable erzeugt ein neues Array und führt nicht zu einer Warnung.

Beispiel #5 Autovivifikation eines Arrays aus einer undefinierten Variable

    <?php
    $unset_array[] = 'value'; // Erzeugt keine Warnung.
    ?>

Warnung

Sich auf den Standardwert einer nicht initialisierten Variablen zu verlassen, ist problematisch, wenn eine Datei in eine andere eingebunden wird, die denselben Variablennamen verwendet.

Eine Variable kann mit dem Sprachkonstrukt unset() gelöscht werden.

Für Informationen zu variablenbezogenen Funktionen siehe Referenz zu Variablenfunktionen.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open