The Ternary Operator
Parte da seção Fundamentos do Journey de PHP da Coddy — lição 30 de 71.
Quando você tem um if-else simples que apenas atribui um valor com base em uma condição, o PHP oferece uma maneira mais curta de escrevê-lo: o operador ternário.
A sintaxe usa ? e : para criar uma condicional compacta de uma linha:
<?php
$age = 20;
// Usando if-else
if ($age >= 18) {
$status = "adult";
} else {
$status = "minor";
}
// A mesma coisa com o operador ternário
$status = $age >= 18 ? "adult" : "minor";
echo $status; // adult
?>A estrutura é: condition ? value_if_true : value_if_false.
PHP avalia a condição primeiro. Se for verdadeira, a expressão retorna o valor após ?. Se falsa, retorna o valor após :.
<?php
$score = 45;
$result = $score >= 50 ? "Pass" : "Fail";
echo $result; // Reprovado
$isLoggedIn = true;
$greeting = $isLoggedIn ? "Welcome back!" : "Please log in";
echo $greeting; // Bem-vindo de volta!
?>O operador ternário é perfeito para atribuições simples de ou/ou. Para lógica mais complexa com múltiplas condições, use instruções if-elseif-else para melhor legibilidade.
Desafio
FácilLeia dois inteiros da entrada: um score e um passingScore.
Use o operador ternário para determinar o resultado com base no seguinte:
- Se
scorefor maior ou igual apassingScore, o resultado deve serPassed - Caso contrário, o resultado deve ser
Failed
Imprima o resultado na primeira linha.
Em seguida, leia um inteiro quantity da entrada. Use o operador ternário para determinar a mensagem de envio:
- Se
quantityfor maior que 10, a mensagem deve serFree shipping - Caso contrário, a mensagem deve ser
Standard shipping
Imprima a mensagem de envio na segunda linha.
Exemplo:
Se as entradas forem 75, 60 e 15, a saída deve ser:
Passed
Free shippingSe as entradas forem 45, 50 e 5, a saída deve ser:
Failed
Standard shippingFolha de consulta
O operador ternário fornece uma maneira compacta de escrever atribuições simples de if-else em uma única linha.
A sintaxe é: condition ? value_if_true : value_if_false
<?php
$age = 20;
// Using if-else
if ($age >= 18) {
$status = "adult";
} else {
$status = "minor";
}
// Same thing with ternary operator
$status = $age >= 18 ? "adult" : "minor";
echo $status; // adult
?>O PHP avalia a condição primeiro. Se verdadeira, retorna o valor após ?. Se falsa, retorna o valor após :.
<?php
$score = 45;
$result = $score >= 50 ? "Pass" : "Fail";
echo $result; // Fail
$isLoggedIn = true;
$greeting = $isLoggedIn ? "Welcome back!" : "Please log in";
echo $greeting; // Welcome back!
?>Use o operador ternário para atribuições simples de ou-ou. Para lógica complexa com múltiplas condições, use instruções if-elseif-else para melhor legibilidade.
Experimente você mesmo
<?php
// Ler entrada
$score = intval(fgets(STDIN));
$passingScore = intval(fgets(STDIN));
$quantity = intval(fgets(STDIN));
// TODO: Escreva seu código abaixo
// Use o operador ternário para determinar se a pontuação é aprovada ou reprovada
// Use o operador ternário para determinar a mensagem de envio
// Exibir os resultados
echo $result . "\n";
echo $shippingMessage;
?>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