Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
 
 
 

Der Null Coalescing Operator (??) in PHP: Standardwerte elegant setzen

Sie befinden sich: Home > Php Tutorial > Der Null Coalescing Operato...

Der Null Coalescing Operator (??) in PHP: Standardwerte elegant setzen


Eintrag am:  21.04.2026
Hits / Besucher:  47
Sprache:  Deutsch
Kategorie:  Einsteiger Tutorials...
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Beim Zugriff auf Variablen, Array-Elemente oder GET-Parameter in PHP besteht immer das Risiko, dass ein Wert nicht gesetzt oder null ist. Vor PHP 7 musste dafür jedes Mal eine isset() Abfrage in Kombination mit dem Ternär-Operator geschrieben werden. Der Null Coalescing Operator ?? löst dieses Problem seit PHP 7 auf elegante Weise. Er prüft, ob ein Wert existiert und nicht null ist, und gibt andernfalls einen Standardwert zurück. Dieses Tutorial erklärt die Funktionsweise, zeigt die Verkettung mehrerer Fallback-Werte und grenzt den Operator klar vom Ternär-Operator sowie dem Elvis-Operator ab.

Illustration zum Tutorial: Der Null Coalescing Operator (??) in PHP: Standardwerte elegant setzen

Zunächst wird die grundlegende Funktionsweise des Operators anhand einfacher Beispiele gezeigt.

Was ist der Null Coalescing Operator?

Der Null Coalescing Operator ?? wurde mit PHP 7 eingeführt und prüft, ob der linke Operand existiert und nicht null ist. Falls ja, wird der linke Wert zurückgegeben. Falls der linke Operand nicht gesetzt oder null ist, wird stattdessen der rechte Operand als Fallback verwendet.

<?php

/* Syntax des Null Coalescing Operators */
$ergebnis = $wert ?? 'Standardwert';

/* Entspricht dieser isset()-Prüfung */
$ergebnis = isset($wert) ? $wert : 'Standardwert';

Der entscheidende Vorteil gegenüber der isset() Variante ist die Kürze und Lesbarkeit. Außerdem erzeugt ?? keine Notice bei nicht definierten Variablen, da die Existenzprüfung bereits eingebaut ist.

Einfache Beispiele

Der Operator eignet sich besonders gut für den Zugriff auf GET-Parameter, Array-Elemente und optionale Variablen.

<?php

/* GET-Parameter mit Standardwert */
$benutzername = $_GET['name'] ?? 'Gast';
echo "Hallo, {$benutzername}!";
/* Gibt "Hallo, Gast!" aus, wenn name nicht in der URL steht */

/* Array-Zugriff absichern */
$config = ['db_host' => 'localhost'];
$port = $config['db_port'] ?? 3306;
echo $port; /* 3306 */

/* Nicht gesetzte Variable */
$farbe = $lieblingsfarbe ?? 'blau';
echo $farbe; /* blau */

In allen drei Fällen würde ohne den ?? Operator eine Notice oder ein umständliches isset() Konstrukt nötig sein. Der Null Coalescing Operator macht den Code kompakter und gleichzeitig sicherer.

Verkettung von ??

Mehrere ?? Operatoren lassen sich hintereinander verketten, um eine Fallback-Kette zu bilden. PHP prüft die Werte von links nach rechts und gibt den ersten zurück, der existiert und nicht null ist.

<?php

$config = ['db_host' => null];

$host = $config['db_host']
?? getenv('DB_HOST')
?? '127.0.0.1';

echo $host;
/* Falls db_host null ist und die Umgebungsvariable
DB_HOST nicht existiert, wird 127.0.0.1 verwendet */

Diese Verkettung ist besonders nützlich bei Konfigurationssystemen, in denen Werte aus mehreren Quellen stammen können. Der letzte Wert in der Kette dient dabei als finaler Standardwert, der immer greift.

Null Coalescing Assignment (??=)

Seit PHP 7.4 gibt es den Null Coalescing Assignment Operator ??=. Er weist einer Variablen nur dann einen Wert zu, wenn sie aktuell null oder nicht gesetzt ist.

<?php

$optionen = ['farbe' => 'rot'];

/* Nur setzen, wenn nicht vorhanden oder null */
$optionen['groesse'] ??= 'M';
$optionen['farbe'] ??= 'blau';

print_r($optionen);
/*
Array
(
[farbe] => rot
[groesse] => M
)
*/
/* farbe bleibt rot, da der Wert bereits existiert */
/* groesse wird auf M gesetzt, da der Key fehlte */

Der ??= Operator ist besonders praktisch beim Initialisieren von Standardwerten in Konfigurationsarrays oder beim Setzen von Standardeigenschaften in Objekten.

Unterschied: ?? vs. Ternär-Operator vs. Elvis-Operator

Die drei Operatoren ??, ?: und der vollständige Ternär-Operator verhalten sich bei bestimmten Werten unterschiedlich. Das folgende Diagramm zeigt die Entscheidungslogik der beiden wichtigsten Varianten im Vergleich.

flowchart TD
    A["$a ?? $b"] --> B{"Existiert $a und ist nicht null?"}
    B -->|Ja| C["Ergebnis: $a"]
    B -->|Nein| D["Ergebnis: $b"]

    E["$a ?: $b"] --> F{"Ist $a truthy?"}
    F -->|Ja| G["Ergebnis: $a"]
    F -->|Nein| H["Ergebnis: $b"]

Der zentrale Unterschied liegt in der Prüfung. Während ?? ausschließlich auf null und „nicht gesetzt“ prüft, bewertet der Elvis-Operator ?: den Wert auf „falsy“. Das führt bei leeren Strings, 0 und false zu unterschiedlichen Ergebnissen.

<?php

/* Leerer String */
$a = '' ?? 'Fallback';
echo $a; /* '' (leerer String ist nicht null) */

$b = '' ?: 'Fallback';
echo $b; /* Fallback (leerer String ist falsy) */

/* Die Zahl 0 */
$c = 0 ?? 'Fallback';
echo $c; /* 0 (Null ist nicht null) */

$d = 0 ?: 'Fallback';
echo $d; /* Fallback (0 ist falsy) */

/* false */
$e = false ?? 'Fallback';
echo $e; /* false (false ist nicht null) */

$f = false ?: 'Fallback';
echo $f; /* Fallback (false ist falsy) */

Der ?? Operator ist daher immer dann die richtige Wahl, wenn 0, leere Strings oder false als gültige Werte erhalten bleiben sollen. Der Elvis-Operator ?: eignet sich hingegen, wenn alle falsy Werte durch einen Standardwert ersetzt werden sollen.

Unterschied: ?? vs. Nullsafe-Operator (?->)

Der Nullsafe-Operator ?-> wurde mit PHP 8.0 eingeführt und dient einem völlig anderen Zweck. Er bricht Methodenketten ab, sobald ein Zwischenergebnis null ist, und gibt in diesem Fall null zurück. Der ?? Operator hingegen liefert einen konkreten Fallback-Wert. Beide Operatoren lassen sich hervorragend kombinieren: Mit ?-> wird eine sichere Methodenkette aufgebaut, und ?? liefert am Ende den Standardwert, falls das Ergebnis null ist.

Fazit

Der Null Coalescing Operator ?? gehört seit PHP 7 zu den wichtigsten Werkzeugen für sauberen und sicheren Code. Er ersetzt umständliche isset() Konstrukte durch eine kompakte Syntax, unterstützt die Verkettung mehrerer Fallback-Werte und erzeugt keine Notices bei nicht definierten Variablen. Der ??= Operator seit PHP 7.4 vereinfacht zusätzlich das bedingte Zuweisen von Standardwerten. Entscheidend ist die Abgrenzung zum Elvis-Operator ?:, der auf falsy Werte prüft, während ?? ausschließlich null und nicht gesetzte Variablen behandelt.

 

Tags:

 

Kommentare (0)

Noch keine Kommentare. Sei der Erste!

Melde dich an, um einen Kommentar zu schreiben.
Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.