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.
Aufgabe
EinfachLesen 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:
- Erstellen Sie eine Variable
$userNickname, die aufnullgesetzt ist. Verwenden Sie dann den Null-Kohäsionsoperator, um$displayNicknameden Wert von$userNicknamezuzuweisen, wenn er existiert und nicht null ist, andernfalls den Eingabewertnickname. - Erstellen Sie eine Variable
$userThemeund weisen Sie ihr den Eingabewertthemezu. Verwenden Sie den Null-Kohäsionsoperator, um$selectedThemeden Wert von$userThemezuzuweisen, wenn er existiert und nicht null ist, andernfallsdarkals Standardwert zu verwenden. - Verwenden Sie den Null-Kohäsionsoperator direkt mit einer undefinierten Variable
$language(definieren Sie sie nicht), um$displayLanguageden Wert von$languagezuzuweisen, falls dieser existiert, andernfallsEnglishals 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
EnglishWenn die Eingaben GuestUser und blue sind, sollte die Ausgabe sein:
GuestUser
blue
EnglishSpickzettel
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; // GuestWenn $variable einen Wert hat, wird dieser Wert verwendet:
$username = "Alice";
$displayName = $username ?? "Guest";
echo $displayName; // AliceDer Operator funktioniert auch mit undefinierten Variablen, ohne einen Fehler auszulösen:
// $color ist nicht definiert
$selectedColor = $color ?? "blue";
echo $selectedColor; // blueProbier 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";
?>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