Null Coalescing Operator
Fait partie de la section Fondamentaux du Journey PHP de Coddy — leçon 31 sur 71.
L'opérateur de coalescence nulle (??) fournit un moyen pratique d'utiliser une valeur par défaut lorsqu'une variable est null ou n'existe pas. Cela est particulièrement utile lors du travail avec des données qui pourraient être manquantes.
La syntaxe place ?? entre la variable à vérifier et la valeur par défaut :
<?php
$username = null;
$displayName = $username ?? "Guest";
echo $displayName; // Guest
?>PHP vérifie si $username est null. Comme c'est le cas, l'opérateur retourne "Guest" à la place. Si $username avait une valeur, cette valeur serait utilisée.
<?php
$username = "Alice";
$displayName = $username ?? "Guest";
echo $displayName; // Alice
?>L'opérateur de coalescence nulle fonctionne également lorsqu'une variable n'a pas été définie du tout, sans déclencher d'erreur :
<?php
// $color n'est défini nulle part
$selectedColor = $color ?? "blue";
echo $selectedColor; // blue
?>Cela rend ?? plus propre que l'utilisation d'un opérateur ternaire avec des vérifications isset(). C'est parfait pour fournir des valeurs par défaut sensées lorsque des données pourraient manquer.
Défi
FacileLisez deux valeurs depuis l'entrée : une chaîne nickname et une chaîne theme.
Utilisez l'opérateur de coalescence nulle pour gérer les valeurs potentiellement manquantes :
- Créez une variable
$userNicknamedéfinie ànull. Ensuite, utilisez l'opérateur de coalescence nulle pour assigner à$displayNicknamela valeur de$userNicknamesi elle existe et n'est pas nulle, sinon utilisez la valeur d'entréenickname. - Créez une variable
$userThemeet assignez-lui la valeur d'entréetheme. Utilisez l'opérateur de coalescence nulle pour assigner à$selectedThemela valeur de$userThemesi elle existe et n'est pas nulle, sinon utilisezdarkcomme valeur par défaut. - Utilisez directement l'opérateur de coalescence nulle avec une variable non définie
$language(ne la définissez pas) pour assigner à$displayLanguagela valeur de$languagesi elle existe, sinon utilisezEnglishcomme valeur par défaut.
Affichez chaque résultat sur une nouvelle ligne dans cet ordre : $displayNickname, $selectedTheme, $displayLanguage.
Exemple :
Si les entrées sont Player1 et light, la sortie devrait être :
Player1
light
EnglishSi les entrées sont GuestUser et blue, la sortie devrait être :
GuestUser
blue
EnglishAide-mémoire
L'opérateur de coalescence nulle (??) fournit une valeur par défaut lorsqu'une variable est null ou n'existe pas.
Syntaxe :
$result = $variable ?? "default value";Si $variable est null, la valeur par défaut est utilisée :
$username = null;
$displayName = $username ?? "Guest";
echo $displayName; // GuestSi $variable a une valeur, cette valeur est utilisée :
$username = "Alice";
$displayName = $username ?? "Guest";
echo $displayName; // AliceL'opérateur fonctionne également avec des variables non définies sans déclencher d'erreur :
// $color is not defined
$selectedColor = $color ?? "blue";
echo $selectedColor; // blueEssayez vous-même
<?php
// Lire l'entrée
$nickname = trim(fgets(STDIN));
$theme = trim(fgets(STDIN));
// TODO : Écrivez votre code ci-dessous
// 1. Créer $userNickname défini à null, puis utiliser ?? pour assigner $displayNickname
// 2. Créer $userTheme avec l'entrée du thème, puis utiliser ?? pour assigner $selectedTheme (par défaut : 'dark')
// 3. Utiliser ?? avec $language non défini pour assigner $displayLanguage (par défaut : 'English')
// Afficher les résultats (chacun sur une nouvelle ligne)
echo $displayNickname . "\n";
echo $selectedTheme . "\n";
echo $displayLanguage . "\n";
?>Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
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