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.
Beispiel #1 Gültige und ungültige Variablennamen
<?php
$var = "du";
$Var = "ich";
echo "$var, $Var"; // gibt "du, ich" aus
$4site = 'nicht jetzt'; // ungültig, da Anfang eine Zahl
$_4site = 'nicht jetzt'; // gültig, da Unterstrich am Anfang
$täbyte = 'irgendwas'; // gültig, da 'ä' dem (Erweiterten) ASCII-Wert 228 entspricht
?>
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 #2 Zugriff auf unklare Variablennamen
<?php
${'ungueltiger-name'} = 'bar';
$name = 'ungueltiger-name';
echo ${'ungueltiger-name'}, " ", $$name;
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
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:
Zu beachten ist, dass nur Variablen referenziert werden können.
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 #3 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 #4 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.