Operador Ternário ( ? ) em PHP
PermalinkRecentemente, escrevi um artigo onde explicava como fazer uma listagem web de uma tabela MySQL onde utilizei um operador que não tinha a certeza absoluta do que fazia e deixei a explicação um pouco vaga.
O operador em questão era o ponto de interrogação. Depois de uma pequena pesquisa, descobri que o seu nome é operador ternário e é um operador condicional.
Já utilizava este operador há algum tempo mas estava reticente em relação à sua sintaxe pois não tinha a certeza se o que estava a fazer estava 100% correto por isso decidi pesquisar.
Este operador é excelente para pequenas e simples condições de if else
onde não pretendemos utilizar muitas linhas.
<?php /* ... */
$url = isset($_GET['url']) ? $_GET['url'] : null;
Esse excerto acima foi tirado do artigo que mencionei acima e faz o mesmo que o código abaixo:
<?php /* ... */
if (isset($_GET['url']) {
$url = $_GET['url'];
} else {
$url = null;
}
Vendo isto, concluímos que o operador ternário é mais simples de utilizar, porém um pouco mais difícil de ler.
A palavra “ternário” provém de “três” e é utilizada neste operador porque este precisa de três argumentos. A sintaxe é a seguinte:
(CONDIÇÃO) ? <O QUE FAZ SE FOR VERDADEIRO> : <O QUE FAZ SE FOR FALSO>
Abaixo encontra-se mais um pequeno exemplo:
<?php /* ... */
$n = rand(0,100);
if ($n > 50) {
echo 'O número é maior que 50!';
} else {
echo 'O número é menor que 50!';
}
//Utilizando o operador ternário ficaria:
echo ($n > 50) ? 'O número é maior que 50!' : 'O número é menor que 50!';
//O leitor Gustavo Rafael sugeriu uma forma mais simplificada:
echo 'O número é ' . (($n > 50) ? 'maior' : 'menor') . ' que 50!';
Mais uma vez podemos concluir que utilizando o operador ternário gastamos menos linhas e poupamos bytes no tamanho do ficheiro.
Para saberem mais sobre operadores em PHP podem aceder a esta página no guia oficial da linguagem. Este operador existe também em outras linguagens como C ou JS por exemplo.
Espero que tenham gostado desta pequena explicação. :)