Menu
Coddy logo textTech

Null Coalescing Operator

Teil des Abschnitts Grundlagen der PHP-Journey von Coddy — Lektion 31 von 71.

Der Null-Kohleszierungsoperator (??) bietet einen bequemen Weg, einen Standardwert zu verwenden, wenn eine Variable null ist oder nicht existiert. Dies ist besonders nützlich beim Arbeiten mit Daten, die möglicherweise fehlen.

Die Syntax platziert ?? zwischen der zu prüfenden Variable und dem Ersatzwert:

<?php
$username = null;

$displayName = $username ?? "Guest";
echo $displayName; // Guest
?>

PHP prüft, ob $username null ist. Da es so ist, gibt der Operator „Guest“ zurück. Wenn $username einen Wert hätte, würde dieser Wert verwendet werden.

<?php
$username = "Alice";

$displayName = $username ?? "Guest";
echo $displayName; // Alice
?>

Der Null-Kohäsionsoperator funktioniert auch, wenn eine Variable überhaupt nicht definiert wurde, ohne einen Fehler auszulösen:

<?php
// $color is not defined anywhere
$selectedColor = $color ?? "blue";
echo $selectedColor; // blue
?>

Das macht ?? sauberer als die Verwendung eines ternären Operators mit isset()-Prüfungen. Es ist perfekt, um sinnvolle Standardwerte bereitzustellen, wenn Daten fehlen könnten.

challenge icon

Aufgabe

Einfach

Lesen Sie zwei Werte aus der Eingabe: einen String nickname und einen String theme.

Verwenden Sie den Null-Kohäsionsoperator, um potenziell fehlende Werte zu handhaben:

  1. Erstellen Sie eine Variable $userNickname, die auf null gesetzt ist. Verwenden Sie dann den Null-Kohäsionsoperator, um $displayNickname den Wert von $userNickname zuzuweisen, wenn er existiert und nicht null ist, andernfalls den Eingabewert nickname.
  2. Erstellen Sie eine Variable $userTheme und weisen Sie ihr den Eingabewert theme zu. Verwenden Sie den Null-Kohäsionsoperator, um $selectedTheme den Wert von $userTheme zuzuweisen, wenn er existiert und nicht null ist, andernfalls dark als Standardwert zu verwenden.
  3. Verwenden Sie den Null-Kohäsionsoperator direkt mit einer undefinierten Variable $language (definieren Sie sie nicht), um $displayLanguage den Wert von $language zuzuweisen, falls dieser existiert, andernfalls English als Standardwert.

Geben Sie jedes Ergebnis in einer neuen Zeile in dieser Reihenfolge aus: $displayNickname, $selectedTheme, $displayLanguage.

Beispiel:

Wenn die Eingaben Player1 und light sind, sollte die Ausgabe sein:

Player1
light
English

Wenn die Eingaben GuestUser und blue sind, sollte die Ausgabe sein:

GuestUser
blue
English

Spickzettel

Der Null-Kohleszierungsoperator (??) stellt einen Standardwert bereit, wenn eine Variable null ist oder nicht existiert.

Syntax:

$result = $variable ?? "default value";

Wenn $variable null ist, wird der Standardwert verwendet:

$username = null;
$displayName = $username ?? "Guest";
echo $displayName; // Guest

Wenn $variable einen Wert hat, wird dieser Wert verwendet:

$username = "Alice";
$displayName = $username ?? "Guest";
echo $displayName; // Alice

Der Operator funktioniert auch mit undefinierten Variablen, ohne einen Fehler auszulösen:

// $color ist nicht definiert
$selectedColor = $color ?? "blue";
echo $selectedColor; // blue

Probier es selbst

<?php
// Eingabe lesen
$nickname = trim(fgets(STDIN));
$theme = trim(fgets(STDIN));

// TODO: Schreiben Sie Ihren Code darunter
// 1. Erstellen Sie $userNickname auf null gesetzt, dann verwenden Sie ?? um $displayNickname zuzuweisen
// 2. Erstellen Sie $userTheme mit der Themen-Eingabe, dann verwenden Sie ?? um $selectedTheme zuzuweisen (Standard: 'dark')
// 3. Verwenden Sie ?? mit undefiniertem $language um $displayLanguage zuzuweisen (Standard: 'English')

// Die Ergebnisse ausgeben (jeweils in einer neuen Zeile)
echo $displayNickname . "\n";
echo $selectedTheme . "\n";
echo $displayLanguage . "\n";
?>
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen