Instrução If-Else no PHP: Um Guia Completo
Aprenda a usar if, else e elseif no PHP para tomar decisões no código, incluindo aninhamento, sintaxe de modelo e o operador ternário.
Instruções condicionais permitem que um programa tome caminhos diferentes dependendo do que é verdadeiro no momento em que é executado. Em PHP, as instruções if, else e elseif são a base desse processo de tomada de decisão. Este capítulo explica cada forma, as condições que as orientam, a sintaxe alternativa de template e os erros comuns a evitar.
Esta página aborda o if simples, a adição de um ramo else, o encadeamento de condições com elseif, o aninhamento, a sintaxe de template com dois-pontos/endif, e o atalho ternário.
A instrução if
Uma instrução if executa um bloco de código somente quando sua condição é avaliada como true. A condição fica entre parênteses; o bloco a executar fica entre chaves.
if (condition) {
// runs only when condition is true
}A condição é qualquer expressão que o PHP possa interpretar como boolean. Operadores de comparação (>, <, >=, <=, ==, ===, !=) e operadores lógicos (&&, ||, !) são os blocos de construção habituais — consulte Operadores PHP para a lista completa.
<?php
$temperature = 30;
if ($temperature > 25) {
echo "It's warm outside.";
}
?>Como 30 > 25 é true, isso imprime It's warm outside.. Se a condição fosse falsa, nada seria impresso e o PHP simplesmente continuaria.
Adicionando um ramo else
else fornece um bloco alternativo que é executado quando a condição do if é false. Exatamente um dos dois blocos é executado — nunca ambos, nunca nenhum.
Aqui $number > 0 é verdadeiro, então o primeiro bloco é executado e a saída é 5 is a positive number. Definir $number como -3 ignoraria o primeiro bloco e executaria o else, imprimindo -3 is a negative number.
Atenção ao operador.
=atribui um valor, enquanto==compara. Escreverif ($number = 0)silenciosamente define$numbercomo0e é tratado como false — um bug clássico. Use==(ou o estrito===, que também verifica o tipo) para comparações.
Verificando várias condições com elseif
Quando há mais de dois resultados possíveis, encadeie condições com elseif. O PHP testa cada condição em ordem e executa a primeira que for verdadeira; se nenhuma corresponder, o else opcional é executado.
Com $number = 0, a primeira condição (> 0) é falsa, então o PHP passa para o elseif (== 0), que é verdadeiro, e imprime 0 is zero. Assim que um ramo corresponde, o restante da cadeia é ignorado — a ordem importa, portanto coloque as condições mais específicas primeiro.
Você pode adicionar quantos ramos elseif precisar. Quando um único valor é comparado com muitas opções fixas, uma instrução switch geralmente é mais limpa do que uma longa cadeia de elseif.
Aninhando instruções if
Um bloco if pode conter outro if para tomar decisões que dependem de uma anterior. Mantenha o aninhamento superficial — mais de dois ou três níveis geralmente indica que a lógica deveria ser dividida em funções.
<?php
$number = 5;
if ($number > 0) {
if ($number % 2 == 0) {
echo "$number is a positive even number";
} else {
echo "$number is a positive odd number";
}
} else {
echo "$number is not positive";
}
?>O if externo confirma que o número é positivo; o if interno então verifica se ele é par ($number % 2 == 0). Como 5 é positivo e ímpar, a saída é 5 is a positive odd number.
Sintaxe alternativa (com dois-pontos)
O PHP também oferece uma forma baseada em dois-pontos que termina com endif. Ela fica bem quando as condições envolvem HTML em templates, onde chaves não correspondidas são fáceis de perder.
<?php $loggedIn = true; ?>
<?php if ($loggedIn): ?>
<p>Welcome back!</p>
<?php else: ?>
<p>Please sign in.</p>
<?php endif; ?>O comportamento é idêntico à forma com chaves — if (...): substitui if (...) {, e endif; substitui o } de fechamento.
O atalho ternário
Para uma atribuição simples de uma coisa ou outra, o operador ternário ?: condensa um if/else em uma expressão: condição ? valor_se_verdadeiro : valor_se_falso.
<?php
$age = 20;
$status = ($age >= 18) ? "adult" : "minor";
echo $status; // adult
?>Isso é equivalente a um bloco if/else de quatro linhas. Use-o apenas em condições curtas; ternários aninhados tornam-se rapidamente ilegíveis.
Resumo
ifexecuta um bloco quando sua condição é verdadeira;elsefornece o fallback.elseifencadeia condições adicionais, e o primeiro ramo verdadeiro vence.- Instruções
ifpodem ser aninhadas, mas mantenha o aninhamento superficial. - A sintaxe com dois-pontos/
endifé útil dentro de templates HTML, e o ternário?:encurta escolhas simples de uma coisa ou outra. - Sempre compare com
==/===, não com a atribuição=.
Em seguida, explore os loops PHP para repetir código enquanto uma condição é mantida, e revise as variáveis PHP para os valores que suas condições testam.