Null Coalescing Operator
Parte de la sección Fundamentos del Journey de PHP de Coddy. Lección 31 de 71.
El operador de fusión de nulos (??) proporciona una forma conveniente de usar un valor default 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 alternativo:
<?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 fusión de null también funciona cuando una variable no se ha definido en absoluto, sin generar un error:
<?php
// $color no está definido en ninguna parte
$selectedColor = $color ?? "blue";
echo $selectedColor; // blue
?>Esto hace que ?? sea más limpio que usar un operador ternario con comprobaciones isset(). Es perfecto para proporcionar valores predeterminados sensatos cuando pueden faltar datos.
Desafío
FácilLee dos valores de la entrada: una cadena nickname y una cadena theme.
Usa el operador de fusión de null (null coalescing) para manejar valores potencialmente ausentes:
- Crea una variable
$userNicknameestablecida ennull. Después usa el operador de fusión de null para asignar a$displayNicknameel valor de$userNicknamesi existe y no es null; de lo contrario, usa el valor de entradanickname. - Crea una variable
$userThemey asígnale el valor de entradatheme. Usa el operador de fusión de null para asignar a$selectedThemeel valor de$userThemesi existe y no es null; de lo contrario, usadarkcomo valor predeterminado. - Usa el operador de fusión de null directamente con una variable no definida
$language(no la defiñas) para asignar a$displayLanguageel valor de$languagesi existe; de lo contrario, usaEnglishcomo 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
EnglishPrué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: el texto exacto de las instrucciones)
// 3. Usa ?? con $language indefinido para asignar $displayLanguage (predeterminado: el texto exacto de las instrucciones)
// Imprime 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 OperatorsPractica por tu cuenta: Compilador de PHP online