(PHP 4, PHP 5, PHP 7)
empty — Prüft, ob eine Variable einen Wert enthält
Prüft, ob eine Variable leer ist. Eine Variable ist leer, wenn sie nicht
existiert oder wenn ihr Wert gleich FALSE
ist. empty()
erzeugt keine Warnung, wenn die Variable nicht existiert.
var
Die zu prüfende Variable.
Hinweis:
Vor PHP 5.5 überprüft empty() nur Variablen, alles andere führt zu einem Parse-Error. Anders gesagt wird folgendes nicht funktionieren: empty(trim($name)). Statt dessen sollte trim($name) == false verwendet werden.
Es wird keine Warnung erzeugt, wenn die Variable nicht existiert. Das bedeutet, dass empty() im Wesentlichen das kurzgefasste Äquivalent zu !isset($var) || $var == false ist.
Gibt FALSE
zurück, wenn var
existiert und einen nicht-leeren,
von 0 verschiedenen Wert hat.
Andernfalls wird TRUE
zurück gegeben.
Folgende Werte werden als leer angesehen:
NULL
FALSE
Version | Beschreibung |
---|---|
5.5.0 |
empty() unterstützt nun Ausdrücke anstatt nur Variablen. |
5.4.0 |
Die Prüfung nicht numerischer Offsets von Zeichenketten gibt |
Beispiel #1 Ein einfacher Vergleich von empty() / isset()
<?php
$var = 0;
// true, weil $var leer ist
if (empty($var)) {
echo '$var ist 0, nicht mit einem Wert belegt, oder nicht gesetzt';
}
// true, weil $var gesetzt wurde
if (isset($var)) {
echo '$var ist gesetzt, obwohl es leer ist';
}
?>
Beispiel #2 empty() und Zeichenketten-Offsets
PHP 5.4 ändert das Verhalten von empty(), wenn Zeichenketten-Offsets übergeben werden.
<?php
$expected_array_got_string = 'einstring';
var_dump(empty($expected_array_got_string['ein_schluessel']));
var_dump(empty($expected_array_got_string[0]));
var_dump(empty($expected_array_got_string['0']));
var_dump(empty($expected_array_got_string[0.5]));
var_dump(empty($expected_array_got_string['0.5']));
var_dump(empty($expected_array_got_string['0 Mostel']));
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe mit PHP 5.3:
bool(false) bool(false) bool(false) bool(false) bool(false) bool(false)
Das oben gezeigte Beispiel erzeugt folgende Ausgabe mit PHP 5.4:
bool(true) bool(false) bool(false) bool(false) bool(true) bool(true)
Hinweis: Da dies ein Sprachkonstrukt und keine Funktion ist, können Sie dieses nicht mit Variablenfunktionen verwenden.
Hinweis:
Bei Aufruf von empty() auf nicht-öffentliche Objekteigenschaften wird die überladene Methode __isset aufgerufen, falls deklariert.