Resumo : neste tutorial, você aprenderá a usar o operador ternário do PHP para tornar o código mais curto e legível.
Introdução ao operador ternário PHP
O operador ternário é uma abreviação para a if...else
instrução. Em vez de escrever isto:
<?php
if (condition) {
$result = value1;
} else {
$result = value2;
}
Linguagem de código: HTML, XML ( xml )
você pode usar isso:
$result = condition ? value1 : value2;
Linguagem de código: PHP ( php )
Como funciona.
- Primeiro. PHP avalia o
condition
. Se for verdade, a expressão à direita retornavalue1
; caso contrário, ele retornará ovalue2
. - Segundo, o PHP atribui o resultado da expressão à direita à
$result
variável.
Como você pode ver, usando o operador ternário, você pode tornar o código mais conciso.
Observe que o nome operador ternário vem do fato de que este operador requer três operandos: expression
, value1
, value2
.
Exemplo de operador ternário PHP
Suponha que você queira exibir o link de login se o usuário não tiver efetuado login e o link de logout se o usuário já tiver efetuado login. Para fazer isso, você pode usar a if...else
instrução a seguir:
<?php
$is_user_logged_in = false;
if ($is_user_logged_in) {
$title = 'Logout';
} else {
$title = 'Login';
}
Linguagem de código: HTML, XML ( xml )
Neste exemplo, $title
será 'Login'
porque the $is_user_logged_in
está definido como false
. O código é bastante extenso. E você pode reduzi-lo usando o operador ternário da seguinte maneira:
<?php
$is_user_logged_in = false;
$title = $is_user_logged_in ? 'Logout' : 'Login';
Linguagem de código: HTML, XML ( xml )
É muito mais curto agora. Se a linha for longa, você sempre pode dividi-la assim:
<?php
$is_user_logged_in = false;
$title = $is_user_logged_in
? 'Logout'
: 'Login';
Linguagem de código: HTML, XML ( xml )
O operador ternário abreviado
A partir do PHP 5.3, você pode usar o operador ternário abreviado da seguinte maneira:
$result = $initial ?: $default;
Linguagem de código: PHP ( php )
Nesta sintaxe, o PHP avalia $initial
no contexto booleano. Se $initial
for verdade, o PHP atribui o valor de $initial
à $result
variável. Caso contrário, ele atribui $default
à $result
variável.
O exemplo a seguir usa o operador ternário abreviado para atribuir o valor de the $path
a $url
se the $path
não estiver vazio. Se $path
estiver vazio, o operador ternário atribui a string literal ‘/’ ao $url
:
<?php
$path = '/about';
$url = $path ?: '/';
echo $url; // /about
Linguagem de código: HTML, XML ( xml )
Saída:
/about
Encadeando operadores ternários
Tecnicamente, você pode encadear operadores ternários usando parênteses.
Suponha que você queira mostrar várias mensagens se os usuários forem qualificados e tiverem crédito suficiente. O exemplo a seguir encadeia dois operadores ternários:
<?php
$eligible = true;
$has_credit = false;
$message = $eligible
? ($has_credit
? 'Can use the credit'
: 'Not enough credit')
: 'Not eligible to buy';
echo $message;
Linguagem de código: HTML, XML ( xml )
Na maioria das vezes, encadear vários operadores ternários torna o código mais difícil de ler. Nesse caso, é melhor usar if...else
ou if...elseif
declaração.
Resumo
- O operador ternário (
?:
) é uma abreviação para aif...else
instrução. - Use o operador ternário quando ele tornar seu código mais conciso e legível.