unset
(PHP 4, PHP 5, PHP 7, PHP 8)
unset — Löschen einer angegebenen Variablen
Beschreibung
unset() löscht die angegebene Variable.
Das Verhalten von unset() innerhalb einer Funktion kann abhängig davon, was für einen Variablentyp Sie zu löschen versuchen, variieren.
Wenn eine globalisierte Variable innerhalb einer Funktion mit unset() behandelt wird, wird nur die lokale Variable gelöscht. Die Variable innerhalb der aufrufenden Umgebung behält den selben Wert wie vor dem Aufruf von unset().
<?php
function destroy_foo()
{
global $foo;
unset($foo);
}
$foo = 'bar';
destroy_foo();
echo $foo;
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
bar
Um eine globale Variable innerhalb einer Funktion zu löschen, kann das $GLOBALS-Array verwendet werden:
<?php
function foo()
{
unset($GLOBALS['bar']);
}
$bar = "something";
foo();
?>
Wenn eine Variable, die als Referenz übergeben wird ("Passed by Reference"), innerhalb einer Funktion gelöscht wird, wird nur die lokale Variable gelöscht. Die Variable im aufrufenden Environment enthält den selben Wert wie vor dem Aufruf von unset().
<?php
function foo(&$bar)
{
unset($bar);
$bar = "blah";
}
$bar = 'something';
echo "$bar\n";
foo($bar);
echo "$bar\n";
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
something something
Wenn eine statische Variable innerhalb einer Funktion gelöscht wird, löscht unset() die Variable nur im Kontext des verbleibenden Funktionsablaufs. Die folgenden Aufrufe stellen den vorhergehenden Wert der Variablen wieder her.
<?php
function foo()
{
static $bar;
$bar++;
echo "Vor unset: $bar, ";
unset($bar);
$bar = 23;
echo "nach unset: $bar\n";
}
foo();
foo();
foo();
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Vor unset: 1, nach unset: 23 Vor unset: 2, nach unset: 23 Vor unset: 3, nach unset: 23
Parameter-Liste
-
var
-
Die zu löschende Variable.
-
vars
-
Weitere zu löschende Variablen ...
Rückgabewerte
Es wird kein Wert zurückgegeben.
Beispiele
Beispiel #1 unset()-Beispiel
<?php
// löscht eine einzelne Variable
unset($foo);
// löscht ein einzelnes Element eines Arrays
unset($bar['quux']);
// löscht mehr als eine Variable
unset($foo1, $foo2, $foo3);
?>
Beispiel #2 Verwendung von (unset)
Casting
(unset)
-Casting
wird häufig mit der unset() Function verwechselt.
(unset)
-Casting dient nur als ein
NULL
-Typ-Cast, der Vollständigkeit halber. Es ändert
nicht die gecastete Variable. Das (unset)-Casting ist ab PHP 7.2.0
missbilligt, ab 8.0.0 entfernt.
<?php
$name = 'Felipe';
var_dump((unset) $name);
var_dump($name);
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
NULL string(6) "Felipe"
Anmerkungen
Hinweis: Da dies ein Sprachkonstrukt und keine Funktion ist, können Sie dieses nicht mit Variablenfunktionen oder benannten Parametern verwenden.
Hinweis:
Es ist möglich, sogar Objekteigenschaften zu löschen, die im aktuellen Kontext sichtbar sind.
Hinweis:
Es ist nicht möglich,
$this
innerhalb einer Objektmethode zu löschen.
Hinweis:
Wenn unset() auf Objekteigenschaften angewendet wird, auf die nicht direkt zugegriffen werden kann, wird, sofern sie deklariert wurde, die Überladungsmethode __unset aufgerufen.
Siehe auch
- isset() - Prüft, ob eine Variable deklariert ist und sich von null unterscheidet
- empty() - Prüft, ob eine Variable leer ist
- __unset
- array_splice() - Entfernt einen Teil eines Arrays und ersetzt ihn durch etwas anderes
- (unset) casting