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).
Variablennamen werden in PHP nach den gleichen Regeln wie andere
Bezeichner erstellt. Ein gültiger Variablenname beginnt mit einem
Buchstaben 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:
Unserem Zweck entspricht also ein Buchstabe von a bis z bzw. A bis Z oder
ein Bytewert von 128 bis 255 (0x80-0xff
).
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.
Information zu Funktionen im Zusammenhang mit Variablen finden Sie im
Abschnitt
Funktionen zur Behandlung von Variablen.
Standardmäßig wird Variablen immer ein Wert zugewiesen. Das heißt, wenn
Sie einer Variablen einen Ausdruck zuweisen, 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 Variablennamen referenziert werden können.
Es ist in PHP nicht zwingend notwendig, Variablen zu initialisieren, es
wird aber trotzdem empfohlen. Nicht initialisierte Variablen haben einen
Vorgabewert der vom Typ abhängt – boolesche Werte sind standardmäßig
false
, Ganz- und Gleitkommazahlen sind standardmäßig Null (0),
Zeichenketten, die z. B. in echo verwendet werden,
sind standardmäßig leer, und Arrays ebenfalls.
Beispiel #1 Vorgabewerte uninitialisierter Variablen
<?php
// Nicht gesetzte UND nicht referenzierte (kein Verwendungskontext) Variable;
// gibt NULL aus
var_dump($unset_var);
// Verwendung als boolescher Wert; gibt 'false' aus (siehe den ternären
// Operator für Details zu dieser Syntax)
echo $unset_bool ? "true\n" : "false\n";
// Verwendung als Zeichenkette; gibt 'string(3) "abc"' aus
$unset_str .= 'abc';
var_dump($unset_str);
// Verwendung als Ganzzahl; gibt 'int(25)' aus
$unset_int += 25; // 0 + 25 => 25
var_dump($unset_int);
// Verwendung als Gleitkommazahl; gibt 'float(1.25)' aus
$unset_float += 1.25;
var_dump($unset_float);
// Verwendung als Array; gibt array(1) { [3]=> string(3) "def" } aus
$unset_arr[3] = "def"; // array() + array(3 => "def") => array(3 => "def")
var_dump($unset_arr);
// Verwendung als Objekt; erzeugt ein neues stdClass-Objekt
// (siehe http://www.php.net/manual/en/reserved.classes.php)
// Gibt aus: object(stdClass)#1 (1) { ["foo"]=> string(3) "bar" }
$unset_obj->foo = 'bar';
var_dump($unset_obj);
?>
Es ist problematisch sich auf den Vorgabewert einer nicht initialisierten
Variable zu verlassen, wenn Sie eine Datei in eine andere inkludieren, die
den gleichen Variablennamen verwendet. Bei Zugriffen auf nicht
initialisierte Variablen wird ein Fehler der Stufe
E_WARNING
(vor PHP 8.0.0
E_NOTICE
) ausgelöst, allerdings trifft dies nicht auf
das Anfügen von Elementen an nicht initialisierte Arrays zu. Um zu prüfen
ob eine Variable bereits initialisiert wurde, kann das Sprachkonstrukt
isset() verwendet werden.