Null Coalescing Operator
Parte de la sección Fundamentos del Journey de PHP de Coddy — lección 31 de 71.
El operador de coalescencia nula (??) proporciona una manera conveniente de usar un valor predeterminado cuando una variable es null o no existe. Esto es especialmente útil cuando se trabaja con datos que podrían faltar.
La sintaxis coloca ?? entre la variable a comprobar y el valor de respaldo:
<?php
$username = null;
$displayName = $username ?? "Guest";
echo $displayName; // Guest
?>PHP comprueba si $username es null. Dado que lo es, el operador devuelve "Guest" en su lugar. Si $username tuviera un valor, se usaría ese valor.
<?php
$username = "Alice";
$displayName = $username ?? "Guest";
echo $displayName; // Alice
?>El operador de coalescencia nula también funciona cuando una variable no ha sido definida en absoluto, sin provocar un error:
<?php
// $color no está definido en ninguna parte
$selectedColor = $color ?? "blue";
echo $selectedColor; // azul
?>Esto hace que ?? sea más limpio que usar un operador ternario con comprobaciones de isset(). Es perfecto para proporcionar valores predeterminados sensatos cuando los datos podrían faltar.
Desafío
FácilLee dos valores de la entrada: una cadena nickname y una cadena theme.
Usa el operador de coalescencia nula para manejar valores potencialmente faltantes:
- Crea una variable
$userNicknameque se establece ennull. Luego usa el operador de coalescencia nula para asignar a$displayNicknameel valor de$userNicknamesi existe y no es nulo, de lo contrario usa el valor de entradanickname. - Crea una variable
$userThemey asígnale el valor de entradatheme. Usa el operador de coalescencia nula para asignar a$selectedThemeel valor de$userThemesi existe y no es nulo, de lo contrario usadarkcomo el valor predeterminado. - Usa el operador de coalescencia nula directamente con una variable indefinida
$language(no la definas) para asignar a$displayLanguageel valor de$languagesi existe, de lo contrario usaEnglishcomo el valor predeterminado.
Imprime cada resultado en una nueva línea en este orden: $displayNickname, $selectedTheme, $displayLanguage.
Ejemplo:
Si las entradas son Player1 y light, la salida debería ser:
Player1
light
EnglishSi las entradas son GuestUser y blue, la salida debería ser:
GuestUser
blue
EnglishHoja de referencia
El operador de coalescencia nula (??) proporciona un valor predeterminado cuando una variable es null o no existe.
Sintaxis:
$result = $variable ?? "default value";Si $variable es null, se utiliza el valor predeterminado:
$username = null;
$displayName = $username ?? "Guest";
echo $displayName; // GuestSi $variable tiene un valor, se utiliza ese valor:
$username = "Alice";
$displayName = $username ?? "Guest";
echo $displayName; // AliceEl operador también funciona con variables no definidas sin activar un error:
// $color is not defined
$selectedColor = $color ?? "blue";
echo $selectedColor; // bluePruébalo tú mismo
<?php
// Leer entrada
$nickname = trim(fgets(STDIN));
$theme = trim(fgets(STDIN));
// TODO: Escribe tu código debajo
// 1. Crea $userNickname establecido en null, luego usa ?? para asignar $displayNickname
// 2. Crea $userTheme con la entrada del tema, luego usa ?? para asignar $selectedTheme (predeterminado: 'dark')
// 3. Usa ?? con $language indefinida para asignar $displayLanguage (predeterminado: 'English')
// Salida de los resultados (cada uno en una nueva línea)
echo $displayNickname . "\n";
echo $selectedTheme . "\n";
echo $displayLanguage . "\n";
?>Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
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