www.PHP-Kurs.com

PHP lernen für Einsteiger
und Fortgeschrittene

PHP-Tutorial mit Videos

Sie befinden sich: Startseite » PHP lernen für Einsteiger » Formularauswertung » leere Variablen befüllen über null coalescing operator

leere Variablen befüllen über den null coalescing operator (??)

Ab der PHP Version 7 haben Sie die Möglichkeit den „null coalescing operator (??)“ einzusetzen. Was macht dieser und warum spart es Tipparbeit und macht unseren PHP-Code besser lesbar?

$vorname = $_GET['vorname'] ?? 'nicht gesetzt';

Die Funktion ist schnell erklärt und einfacher zu verstehen, wenn wir die Übersetzung der englischen Wörter uns ansehen:

  • Null ist klar, wenn „kein Inhalt“
  • Coalescing bedeutet „verschmelzen“
  • Operate schönes Wort für „arbeiten“

Unser Arbeiter („operator“) springt dann an, wenn der erste Wert (in dem Fall unsere übergebene Variable $_GET['vorname']) nicht gesetzt (Null) ist und übergibt den Vorgabewert.

In unserem Beispiel gibt es 2 Möglichkeiten:

  • die übergebene Variable $_GET['vorname'] hat einen Wert (kommt aus einem Formular) und somit wird der Teil nach den 2 Fragezeichen ignoriert
  • die Variable $_GET['vorname'] hat keinen Wert und ist nicht gesetzt, somit wird der Wert nach den 2 Fragezeichen gesetzt.

Warum ist das von großem Vorteil? Weil PHP mit Fehlermeldungen um sich wirft, wenn eine Variable genutzt wird, die bisher nicht gesetzt wurde. Über den null coalescing operator kann darüber sehr einfach eine ungesetzte Variable verhindert werden.

Zum Vergleich vor dem Einsatz von null coalescing operator:

Früher wurde gerne die Abfrage über isset() gemacht:

if ( ! isset($_GET['vorname'])) {
    $vorname = 'nicht gesetzt';
}

Dagegen ist die neue Möglichkeit doch deutlich übersichtlicher:

$vorname = $_GET['vorname'] ?? 'nicht gesetzt';

ternary operator: bedingter (ternärer) Operator

Das obige Beispiel kann man auch programmieren über den ternären Operator, der 3 Operanden hat. Das Wort Tenär kommt vom lateinisch: ter - dreimal. Ternär bedeutet also "aus drei Komponenten bestehend.

Der bedingte (ternärer) Operator wird oft als Kurzform der if-Bedingung eingesetzt. Mit diesem würde unser obiges Beispiel wie folgt aussehen:

$vorname = isset($_GET['vorname']) ? $_GET['vorname'] : 'nicht gesetzt';

Auch hier sieht man, dass der null coalescing operator kürzer und übersichtlicher ist.

Verketten vom null coalescing operator

Wir können auch gleichzeitig mehrere Abfragen verketten:

$wert = $_GET['vorname'] ?? $_GET['nachname'] ?? 'nicht gesetzt';

Einfach einmal testen.

Wenn Sie einen Fehler finden, bitte mitteilen (egal ob Schreibfehler oder inhaltlicher Fehler).

Mit Maus fehlerhafte Stelle markieren und übernehmen mit folgendem Button:



(kann angegeben werden)

Nach Absenden kommt hier Feedback! Bitte nicht doppelt absenden. Danke.

Bitte unterstützen Sie dieses Projekt

Sie können dieses Projekt in verschiedenen Formen unterstützen - wir würden uns freuen und es würde uns für weitere Inhalte motivieren :).

unsere Videos bestellen

Unsere Videos und eBooks bestellen.

Spenden

Sie können uns eine Spende über PayPal zukommen lassen.

Weiterempfehlungen

Empfehlen Sie es weiter - wir freuen uns immer über Links und Facebook-Empfehlungen.

Bücher über Amazon

Bestellen Sie Bücher über folgende Links bei Amazon:

Fehler melden

Vielen Dank für Ihre Hilfe