Operador de coalescencia nula
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. Como 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
4Operadores de comparación y lógicos
Operadores de comparaciónIgualdad e identidadOperadores lógicos, parte 1Operadores lógicos, parte 2Repaso: lógica simple2Variables y tipos de datos
NúmerosCadenas y comillasBooleanosConvenciones de nombresRepaso: inicialización de variablesVariables vacíasConcatenación de cadenasObtener datos del usuarioConvertir a otros tipos5Lógica condicional
Sentencia ifIf - ElseEl operador ternarioOperador de coalescencia nulaSentencia switchRepaso - Tomar decisiones3Operadores básicos
Operadores aritméticosOperador móduloOperador de exponenciaciónAsignación combinadaIncremento/DecrementoPrecedencia de operadoresRepaso: cálculos simplesOperadores de cadenasPractica por tu cuenta: Compilador de PHP online