Menu
Coddy logo textTech

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.

challenge icon

Desafío

Fácil

Lee 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:

  1. Crea una variable $userNickname establecida en null. Después usa el operador de fusión de null para asignar a $displayNickname el valor de $userNickname si existe y no es null; de lo contrario, usa el valor de entrada nickname.
  2. Crea una variable $userTheme y asígnale el valor de entrada theme. Usa el operador de fusión de null para asignar a $selectedTheme el valor de $userTheme si existe y no es null; de lo contrario, usa dark como valor predeterminado.
  3. Usa el operador de fusión de null directamente con una variable no definida $language (no la defiñas) para asignar a $displayLanguage el valor de $language si existe; de lo contrario, usa English como 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
English

Si las entradas son GuestUser y blue, la salida debería ser:

GuestUser
blue
English

Prué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";
?>
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos

Practica por tu cuenta: Compilador de PHP online