Menu
Coddy logo textTech

Null Coalescing Operator

Parte da seção Fundamentos do Journey de PHP da Coddy — lição 31 de 71.

O operador de coalescência nula (??) fornece uma maneira conveniente de usar um valor padrão quando uma variável é null ou não existe. Isso é especialmente útil ao trabalhar com dados que podem estar ausentes.

A sintaxe coloca ?? entre a variável a ser verificada e o valor de fallback:

<?php
$username = null;

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

PHP verifica se $username é null. Como é, o operador retorna "Guest" em vez disso. Se $username tivesse um valor, esse valor seria usado.

<?php
$username = "Alice";

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

O operador de coalescência nula também funciona quando uma variável não foi definida em lugar nenhum, sem gerar um erro:

<?php
// $color não está definida em lugar nenhum
$selectedColor = $color ?? "blue";
echo $selectedColor; // azul
?>

Isso torna ?? mais limpo que usar um operador ternário com verificações isset(). É perfeito para fornecer valores padrão sensatos quando os dados podem estar ausentes.

challenge icon

Desafio

Fácil

Leia dois valores da entrada: uma string nickname e uma string theme.

Use o operador de coalescência nula para lidar com valores potencialmente ausentes:

  1. Crie uma variável $userNickname que é definida como null. Em seguida, use o operador de coalescência nula para atribuir a $displayNickname o valor de $userNickname se ele existir e não for nulo, caso contrário, use o valor de entrada nickname.
  2. Crie uma variável $userTheme e atribua a ela o valor de entrada theme. Use o operador de coalescência nula para atribuir a $selectedTheme o valor de $userTheme se ele existir e não for nulo, caso contrário, use dark como o padrão.
  3. Use o operador de coalescência nula diretamente com uma variável indefinida $language (não a defina) para atribuir a $displayLanguage o valor de $language se ele existir, caso contrário, use English como o padrão.

Imprima cada resultado em uma nova linha nesta ordem: $displayNickname, $selectedTheme, $displayLanguage.

Exemplo:

Se as entradas forem Player1 e light, a saída deve ser:

Player1
light
English

Se as entradas forem GuestUser e blue, a saída deve ser:

GuestUser
blue
English

Folha de consulta

O operador de coalescência nula (??) fornece um valor padrão quando uma variável é null ou não existe.

Sintaxe:

$result = $variable ?? "default value";

Se $variable for null, o valor padrão é usado:

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

Se $variable tiver um valor, esse valor é usado:

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

O operador também funciona com variáveis indefinidas sem gerar um erro:

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

Experimente você mesmo

<?php
// Ler entrada
$nickname = trim(fgets(STDIN));
$theme = trim(fgets(STDIN));

// TODO: Escreva seu código abaixo
// 1. Crie $userNickname definido como null, depois use ?? para atribuir $displayNickname
// 2. Crie $userTheme com a entrada do tema, depois use ?? para atribuir $selectedTheme (padrão: 'dark')
// 3. Use ?? com $language indefinida para atribuir $displayLanguage (padrão: 'English')

// Exiba os resultados (cada um em uma nova linha)
echo $displayNickname . "\n";
echo $selectedTheme . "\n";
echo $displayLanguage . "\n";
?>
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos