Grundlegendes
Variablen werden in PHP durch ein Dollar-Zeichen ($) gefolgt vom Namen der Variable dargestellt. Bei Variablen-Namen wird zwischen Groß- und Kleinschreibung unterschieden (case-sensitive).
Variablen-Namen werden in PHP nach den gleichen Regeln wie
andere Bezeichner erstellt. Ein gültiger Variablen-Name 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 einem Bytewert von 128 bis 255 (0x80-0xff).
Hinweis: $this ist eine spezielle Variable, die nicht geändert werden kann.
Siehe auch Userland-Namensregeln.
Information zu Funktionen im Zusammenhang mit Variablen finden Sie im Abschnitt Funktionen zur Behandlung von Variablen.
<?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
?>
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. Die Folge ist, dass eine Variable, die ihren Inhalt von einer anderen Variablen erhalten hat, ihren Inhalt behält, auch wenn Sie danach den Inhalt der anderen (Quell- / Ursprungs-)Variablen ändern. Die Inhalte der Ziel- und Quellvariablen sind also insoweit unabhängig voneinander. Für weitere Informationen 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). Beide Variablen zeigen also auf die selbe(n) Speicherstelle(n). Änderungen der neuen Variablen ändern auch deren Ursprungs-Variable und umgekehrt.
Für die Zuweisung per Referenz müssen Sie lediglich ein Kaufmannsund (&) der (Ausgangs-, Quell-) Variablen voranstellen, die sie einer anderen Variablen zuweisen wollen. Das folgende Code- Schnipsel wird zweimal 'Mein Name ist 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 Variablenbezeichner referenziert werden können.
<?php
$foo = 25;
$bar = &$foo; // Gültige Zuweisung.
$bar = &(24 * 7); // Ungültig, da ein unbenannte Ausdruck referenziert wird.
function test()
{
return 25;
}
$bar = &test(); // Ungültig.
?>
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 Fließkommazahlen 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 Fließkommazahl; 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 Dateien inkludieren die die gleichen Variablennamen benutzen. Wenn register_globals aktiviert ist führt dies zu einem extremen Sicherheitsproblem. Bei Zugriffen auf nicht initialisierte Variablen wird ein Fehler der Stufe E_NOTICE ausgelöst, dies trifft allerdings nicht auf das Anfügen von Elementen an nicht initialisierte Arrays zu. Das isset() Sprachkonstrukt kann genutzt werden, um zu prüfen ob eine Variable bereits initialisiert wurde.
Deutsche Übersetzung
Sie haben gebeten, diese Seite auf Deutsch zu besuchen. Momentan ist nur die Oberfläche übersetzt, aber noch nicht der gesamte Inhalt.Wenn Sie mir bei Übersetzungen helfen wollen, ist Ihr Beitrag willkommen. Alles, was Sie tun müssen, ist, sich auf der Website zu registrieren und mir eine Nachricht zu schicken, in der Sie gebeten werden, Sie der Gruppe der Übersetzer hinzuzufügen, die Ihnen die Möglichkeit gibt, die gewünschten Seiten zu übersetzen. Ein Link am Ende jeder übersetzten Seite zeigt an, dass Sie der Übersetzer sind und einen Link zu Ihrem Profil haben.
Vielen Dank im Voraus.
Dokument erstellt 30/01/2003, zuletzt geändert 26/10/2018
Quelle des gedruckten Dokuments:https://www.gaudry.be/de/php-rf-language.variables.basics.html
Die Infobro ist eine persönliche Seite, deren Inhalt in meiner alleinigen Verantwortung liegt. Der Text ist unter der CreativeCommons-Lizenz (BY-NC-SA) verfügbar. Weitere Informationen auf die Nutzungsbedingungen und dem Autor.
Referenzen
Diese Verweise und Links verweisen auf Dokumente, die während des Schreibens dieser Seite konsultiert wurden, oder die zusätzliche Informationen liefern können, aber die Autoren dieser Quellen können nicht für den Inhalt dieser Seite verantwortlich gemacht werden.
Der Autor Diese Website ist allein dafür verantwortlich, wie die verschiedenen Konzepte und Freiheiten, die mit den Nachschlagewerken gemacht werden, hier dargestellt werden. Denken Sie daran, dass Sie mehrere Quellinformationen austauschen müssen, um das Risiko von Fehlern zu reduzieren.