Null Coalescing Operator
Teil des Abschnitts Grundlagen der PHP-Journey von Coddy. Lektion 31 von 71.
Der Null-Coalescing-Operator (??) bietet eine praktische Möglichkeit, einen Standardwert zu verwenden, wenn eine Variable null ist oder nicht existiert. Dies ist besonders nützlich, wenn Sie mit Daten arbeiten, die möglicherweise fehlen.
Die Syntax platziert ?? zwischen der zu prüfenden Variable und dem Ersatzwert (Fallback):
<?php
$username = null;
$displayName = $username ?? "Guest";
echo $displayName; // Guest
?>PHP prüft, ob $username null ist. Da dies der Fall ist, gibt der Operator stattdessen "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-Coalescing-Operator funktioniert auch, wenn eine Variable überhaupt nicht definiert wurde, ohne einen Fehler auszulösen:
<?php
// $color ist nirgendwo definiert
$selectedColor = $color ?? "blue";
echo $selectedColor; // blue
?>Das macht ?? sauberer als die Verwendung eines Ternär-Operators mit isset()-Prüfungen. Es ist perfekt geeignet, um vernünftige Standardwerte bereitzustellen, wenn Daten fehlen könnten.
Aufgabe
EinfachLies zwei Werte aus der Eingabe ein: einen String nickname und einen String theme.
Verwende den Null Coalescing Operator, um mit potenziell fehlenden Werten umzugehen:
- Erstelle eine Variable
$userNickname, die aufnullgesetzt ist. Verwende dann den Null Coalescing Operator, um$displayNicknameden Wert von$userNicknamezuzuweisen, falls dieser existiert und nicht null ist, andernfalls verwende den Eingabewertnickname. - Erstelle eine Variable
$userThemeund weise ihr den Eingabewertthemezu. Verwende den Null Coalescing Operator, um$selectedThemeden Wert von$userThemezuzuweisen, falls dieser existiert und nicht null ist, andernfalls verwendedarkals Standard. - Verwende den Null Coalescing Operator direkt mit einer undefinierten Variable
$language(definiere sie nicht), um$displayLanguageden Wert von$languagezuzuweisen, falls sie existiert, andernfalls verwendeEnglishals Standard.
Gib jedes Ergebnis in einer neuen Zeile in dieser Reihenfolge aus: $displayNickname, $selectedTheme, $displayLanguage.
Beispiel:
Wenn die Eingaben Player1 und light lauten, sollte die Ausgabe wie folgt aussehen:
Player1
light
EnglishWenn die Eingaben GuestUser und blue lauten, sollte die Ausgabe wie folgt aussehen:
GuestUser
blue
EnglishProbier es selbst
<?php
// Eingabe lesen
$nickname = trim(fgets(STDIN));
$theme = trim(fgets(STDIN));
// TODO: Schreibe deinen Code darunter
// 1. Erstelle $userNickname gesetzt auf null, dann verwende ?? um $displayNickname zuzuweisen
// 2. Erstelle $userTheme mit der Theme-Eingabe, dann verwende ?? um $selectedTheme zuzuweisen (Standard: der exakte Text aus den Anweisungen)
// 3. Verwende ?? mit undefiniertem $language um $displayLanguage zuzuweisen (Standard: der exakte Text aus den Anweisungen)
// Gib die Ergebnisse aus (jedes in einer neuen Zeile)
echo $displayNickname . "\n";
echo $selectedTheme . "\n";
echo $displayLanguage . "\n";
?>Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4Comparison & Logical Operators
Comparison OperatorsEquality & IdentityLogical Operators Part 1Logical Operators Part 2Recap - Simple Logic2Variables and Data Types
NumbersStrings and QuotesBooleansNaming ConventionsRecap - Variable InitEmpty VariablesString ConcatenationGetting User InputCast to Different Types5Conditional Logic
If StatementIf - ElseThe Ternary OperatorNull Coalescing OperatorSwitch StatementRecap - Making Decisions3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString OperatorsÜbe selbstständig: Online-PHP-Compiler