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 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.

challenge icon

Desafío

Fácil

Lee dos valores de la entrada: una cadena nickname y una cadena theme.

Usa el operador de coalescencia nula para manejar valores potencialmente faltantes:

  1. Crea una variable $userNickname que se establece en null. Luego usa el operador de coalescencia nula para asignar a $displayNickname el valor de $userNickname si existe y no es nulo, 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 coalescencia nula para asignar a $selectedTheme el valor de $userTheme si existe y no es nulo, de lo contrario usa dark como el valor predeterminado.
  3. Usa el operador de coalescencia nula directamente con una variable indefinida $language (no la definas) para asignar a $displayLanguage el valor de $language si existe, de lo contrario usa English como 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
English

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

GuestUser
blue
English

Hoja 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; // Guest

Si $variable tiene un valor, se utiliza ese valor:

$username = "Alice";
$displayName = $username ?? "Guest";
echo $displayName; // Alice

El operador también funciona con variables no definidas sin activar un error:

// $color is not defined
$selectedColor = $color ?? "blue";
echo $selectedColor; // blue

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: '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";
?>
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