W3docs

isset

Das Schlüsselwort "isset" prüft in PHP, ob eine Variable gesetzt und nicht null ist. Syntax, Verwendung und Beispiele zur isset()-Funktion.

Die PHP-Funktion isset()

isset() ist ein PHP-Sprachkonstrukt, das true zurückgibt, wenn eine Variable vorhanden (zugewiesen) und nicht null ist. Es gibt false zurück, wenn die Variable nie gesetzt wurde, explizit auf null gesetzt wurde oder mit unset() entfernt wurde.

Da das Lesen einer undefinierten Variable in PHP einen Warning: Undefined variable-Hinweis auslöst, ist isset() der standardmäßige, nebenwirkungsfreie Weg, um zu prüfen, ob hier ein nutzbarer Wert vorhanden ist, bevor man ihn tatsächlich verwendet — zum Beispiel beim Absichern des Zugriffs auf $_GET, $_POST oder Array-Schlüssel, die möglicherweise nicht vorhanden sind.

Dieses Kapitel behandelt die Syntax, die Mehrfachargument-Form, das Verhalten bei Arrays und Objekteigenschaften sowie den Vergleich mit verwandten Werkzeugen wie empty() und dem Null-Koaleszenzoperator.

Syntax

isset(mixed $var, mixed ...$vars): bool

Eine minimale Absicherung sieht so aus:

if (isset($myVariable)) {
  echo "The variable is set.";
} else {
  echo "The variable is not set.";
}

isset() ist ein Sprachkonstrukt, kein Funktionsaufruf. Es muss daher nichts eingebunden oder importiert werden, und es können mehrere Variablen auf einmal übergeben werden (siehe unten).

Grundlegende Beispiele

<?php

// Example 1 — an assigned, non-null variable
$myVariable = "Hello, world!";
echo isset($myVariable) ? "set" : "not set"; // set
echo PHP_EOL;

// Example 2 — a variable that was never declared
echo isset($someOtherVariable) ? "set" : "not set"; // not set
echo PHP_EOL;

// Example 3 — a variable explicitly set to null
$empty = null;
echo isset($empty) ? "set" : "not set"; // not set

Ausgabe:

set
not set
not set

Der dritte Fall ist die entscheidende Falle: Die Zuweisung von null reicht aus, damit isset() false zurückgibt, auch wenn die Variable technisch gesehen existiert. Wenn man zwischen "nie deklariert" und "deklariert, aber null" unterscheiden muss, sollte stattdessen is_null() oder array_key_exists() verwendet werden.

„Probier es selbst" ist für dieses Beispiel nicht verfügbar.

Mehrere Variablen gleichzeitig prüfen

Wenn mehr als ein Argument übergeben wird, gibt isset() nur dann true zurück, wenn jedes Argument gesetzt und nicht null ist. Dies ist praktisch, um zu prüfen, ob eine Gruppe erforderlicher Formularfelder vollständig übergeben wurde.

<?php

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

var_dump(isset($name, $email));         // bool(true)
var_dump(isset($name, $email, $phone)); // bool(false) — $phone is null

isset() mit Arrays

isset() funktioniert bei Array-Elementen und prüft sicher verschachtelte Schlüssel, ohne eine Warnung auszulösen, wenn ein Zwischenschlüssel fehlt.

<?php

$user = [
  'name'    => 'Ada',
  'address' => ['city' => 'London'],
];

var_dump(isset($user['name']));             // bool(true)
var_dump(isset($user['missing']));          // bool(false)
var_dump(isset($user['address']['city']));  // bool(true)
var_dump(isset($user['address']['zip']));   // bool(false) — no warning

Beachten Sie, dass isset($array['key']) false zurückgibt, wenn der Wert an diesem Schlüssel null ist. Wenn ein Schlüssel legitim null enthalten darf und es nur darum geht, ob der Schlüssel vorhanden ist, sollte array_key_exists() verwendet werden.

isset() vs. empty() vs. der Null-Koaleszenzoperator

Diese drei werden häufig verwechselt. Die Tabelle zeigt, was jedes für dieselbe Eingabe zurückgibt:

Wert von $xisset($x)empty($x)
"hello"truefalse
0 oder "0" oder ""truetrue
nullfalsetrue
undefiniertfalsetrue

Verwenden Sie also isset(), um zu fragen „Existiert hier ein echter Wert?", und empty(), um zu fragen „Fehlt dieser Wert oder ist er falsy (leerer String, 0, false, leeres Array)?".

Seit PHP 7 baut der Null-Koaleszenzoperator ?? auf der Semantik von isset() auf und liefert in einem Ausdruck einen Standardwert — er ist der idiomatische Ersatz für den ternären Ausdruck isset() ? : :

<?php

$config = ['theme' => 'dark'];

// Verbose, pre-PHP 7 style:
$theme = isset($config['theme']) ? $config['theme'] : 'light';

// Equivalent with the null coalescing operator:
$theme = $config['theme'] ?? 'light';

echo $theme; // dark

$config['missing'] ?? 'light' ergibt 'light' ohne Warnung, genau weil ?? intern isset() prüft.

Wann isset() verwenden

  • Absichern optionaler Anfragedaten: if (isset($_GET['page'])) { ... }.
  • Prüfen erforderlicher Felder vor der Verarbeitung eines Formulars (isset($a, $b, $c)).
  • Sicheres Lesen möglicherweise fehlender Array-Schlüssel in Konfigurationen oder JSON-dekodierten Daten.
  • Lazy-Initialisierung eines Werts nur einmal: $cache ??= computeExpensiveValue();.

Greifen Sie zu einem anderen Werkzeug, wenn null als „vorhanden" behandelt werden soll (array_key_exists()), der Inhalt von Objekten/Arrays auf Falsy geprüft werden soll (empty()) oder eine Variable vollständig entfernt werden soll (unset()).

Übung

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