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.
Desafio
FácilLeia dois valores da entrada: uma string nickname e uma string theme.
Use o operador de coalescência nula para lidar com valores potencialmente ausentes:
- Crie uma variável
$userNicknameque é definida comonull. Em seguida, use o operador de coalescência nula para atribuir a$displayNicknameo valor de$userNicknamese ele existir e não for nulo, caso contrário, use o valor de entradanickname. - Crie uma variável
$userThemee atribua a ela o valor de entradatheme. Use o operador de coalescência nula para atribuir a$selectedThemeo valor de$userThemese ele existir e não for nulo, caso contrário, usedarkcomo o padrão. - Use o operador de coalescência nula diretamente com uma variável indefinida
$language(não a defina) para atribuir a$displayLanguageo valor de$languagese ele existir, caso contrário, useEnglishcomo 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
EnglishSe as entradas forem GuestUser e blue, a saída deve ser:
GuestUser
blue
EnglishFolha 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; // GuestSe $variable tiver um valor, esse valor é usado:
$username = "Alice";
$displayName = $username ?? "Guest";
echo $displayName; // AliceO operador também funciona com variáveis indefinidas sem gerar um erro:
// $color is not defined
$selectedColor = $color ?? "blue";
echo $selectedColor; // blueExperimente 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";
?>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
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 Operators