W3docs

isset()

Die Funktion isset() in PHP prüft, ob eine Variable gesetzt und nicht null ist. Sie gibt true zurück, wenn die Variable existiert.

Einführung

Das Konstrukt isset() ist ein eingebautes Sprachkonstrukt in PHP, das prüft, ob eine Variable gesetzt wurde. Es gibt true zurück, wenn die Variable existiert und nicht null ist, andernfalls false.

Das Wichtigste ist, dass isset() nur die Existenz prüft, nicht den Wahrheitswert. Es gibt true zurück, selbst wenn der Wert 0, false, "0" oder ein leerer String "" ist — es gibt nur false zurück für Variablen, die nie definiert wurden, die mit unset entfernt wurden oder die null enthalten.

Damit ist isset() der sichere Weg, Array-Schlüssel und Formularfelder zu prüfen, bevor man sie ausliest, und vermeidet die Warnungen „Undefined variable" und „Undefined array key", die PHP ausgibt, wenn auf etwas zugegriffen wird, das nicht existiert.

Diese Seite behandelt die Syntax von isset(), das Verhalten bei null, 0 und fehlenden Array-Schlüsseln, die Prüfung mehrerer Variablen gleichzeitig und die Unterschiede zu den verwandten Funktionen empty(), is_null() und array_key_exists().

Syntax

Die Syntax des Konstrukts isset() lautet wie folgt:

Die PHP-Syntax von isset()

bool isset(mixed $var [, mixed $... ])

Das Konstrukt nimmt einen oder mehrere Parameter entgegen: $var und optional weitere durch Kommas getrennte Parameter. Jeder Parameter steht für eine Variable, die auf ihren gesetzten Zustand geprüft wird. Das Konstrukt gibt true zurück, wenn alle Variablen existieren und nicht null sind, andernfalls false.

Verwendungsbeispiel

Hier ist ein Beispiel für die Verwendung des Konstrukts isset() in PHP:

Beispiel für PHP isset()

<?php
$var1 = "hello";
$var2 = null;
$var3 = 0;
$array = ['key' => 'value'];

if (isset($var1)) {
    echo '$var1 is set and is not null' . "\n";
}
if (isset($var2)) {
    echo '$var2 is set and is not null' . "\n";
} else {
    echo '$var2 is not set or is null' . "\n";
}
if (isset($var3)) {
    echo '$var3 is set (value is 0)' . "\n";
}
if (isset($array['key'])) {
    echo "Array key 'key' is set" . "\n";
}
?>

In diesem Beispiel definieren wir mehrere Variablen und ein Array. Wir verwenden das Konstrukt isset(), um zu prüfen, ob jede Variable oder jeder Array-Schlüssel gesetzt ist. Die erste if-Anweisung gibt true zurück, weil $var1 gesetzt ist. Die zweite if-Anweisung gibt false zurück, weil $var2 den Wert null hat, sodass der else-Block ausgeführt wird. Die dritte if-Anweisung gibt true zurück, weil $var3 auf 0 gesetzt ist (was zeigt, dass isset() die Existenz prüft, nicht den Wahrheitswert). Die vierte if-Anweisung gibt true zurück, weil der Array-Schlüssel 'key' existiert.

Mehrere Variablen gleichzeitig prüfen

isset() akzeptiert mehrere Argumente und gibt nur dann true zurück, wenn jedes Argument gesetzt und nicht null ist. Sobald eines fehlt oder null ist, gibt der gesamte Aufruf false zurück. Das ist praktisch, um zu prüfen, ob eine Gruppe erforderlicher Werte vollständig vorhanden ist, bevor man fortfährt:

<?php
$name  = "Ada";
$email = "[email protected]";
$phone = null;

if (isset($name, $email)) {
    echo "Both name and email are set" . "\n";
}

if (isset($name, $email, $phone)) {
    echo "All three are set" . "\n";
} else {
    echo "At least one of name, email, phone is missing or null" . "\n";
}
?>

Da $phone den Wert null hat, gibt das zweite isset() false zurück, obwohl die anderen beiden gesetzt sind.

Verschachtelte Arrays und fehlende Schlüssel

Ein häufiger Grund für den Einsatz von isset() ist das Lesen tief verschachtelter Daten, wie z. B. $_POST oder eine dekodierte JSON-Struktur, bei der jede Ebene fehlen kann. isset() bricht sicher kurz: Wenn ein Zwischenschlüssel nicht existiert, gibt es false zurück, anstatt eine Warnung auszulösen.

<?php
$user = [
    'profile' => [
        'name' => 'Grace',
    ],
];

var_dump(isset($user['profile']['name']));   // bool(true)
var_dump(isset($user['profile']['age']));    // bool(false) - key missing
var_dump(isset($user['settings']['theme'])); // bool(false) - 'settings' missing entirely
?>

Beachte, dass isset() für einen vorhandenen Schlüssel, dessen Wert null ist, false zurückgibt. Wenn man zwischen „Schlüssel existiert, enthält aber null" und „Schlüssel existiert nicht" unterscheiden muss, sollte stattdessen array_key_exists() verwendet werden.

isset() vs empty(), is_null() und array_key_exists()

Diese vier Funktionen werden leicht verwechselt. Die Tabelle zeigt, was jede für eine Variable $x mit verschiedenen Werten zurückgibt:

Wert von $xisset($x)empty($x)is_null($x)
"text"truefalsefalse
0 / 0.0 / "0"truetruefalse
"" (leerer String)truetruefalse
nullfalsetruetrue
undefiniert / unsetfalsetrueWarnung + true

Wichtige Erkenntnisse:

  • Verwende isset(), wenn du wissen möchtest, ob etwas existiert und nicht null ist — es löst niemals eine Warnung bei undefinierten Variablen aus.
  • Verwende empty(), wenn du wissen möchtest, ob ein Wert „falsy" ist (0, "", null, false, leeres Array usw.).
  • Verwende is_null(), wenn du speziell nach dem Wert null fragst — beachte jedoch, dass es warnt, wenn die Variable nie definiert wurde.
  • Verwende array_key_exists(), wenn ein Schlüssel legitim null enthalten kann und du trotzdem seine Anwesenheit erkennen möchtest.

Die Null-Coalescing-Kurzschreibweise

Seit PHP 7 ist der Null-Coalescing-Operator ?? eine kompakte Alternative zu einer isset()-Prüfung mit anschließendem Fallback-Wert. Der Ausdruck $a ?? $b wertet zu $a aus, wenn es gesetzt und nicht null ist, andernfalls zu $b — ohne Warnung:

<?php
$config = ['timeout' => 30];

// Verbose: explicit isset()
$retries = isset($config['retries']) ? $config['retries'] : 5;
echo $retries . "\n"; // 5

// Concise: same result with the ?? operator
$timeout = $config['timeout'] ?? 60;
echo $timeout . "\n"; // 30
?>

Verwende ??, wenn du nur einen Standardwert benötigst; behalte isset(), wenn du das boolean-Ergebnis selbst brauchst, zum Beispiel innerhalb einer größeren Bedingung.

Fazit

Das Konstrukt isset() ist ein nützliches Werkzeug, um zu prüfen, ob eine Variable in PHP gesetzt wurde. Es kann verwendet werden, um sicherzustellen, dass eine Variable existiert, bevor Operationen an ihr durchgeführt werden, oder um gesetzte und nicht gesetzte Variablen auf bestimmte Weise zu behandeln. Durch die Verwendung dieses Konstrukts können Entwickler sicherstellen, dass ihr Code mit den erwarteten Daten arbeitet und Fehler vermeidet, die bei der Arbeit mit null-Werten auftreten können.

Übung

Übung
Was ist die Funktion von isset() in PHP?
Was ist die Funktion von isset() in PHP?
Was this page helpful?