PHP if else para lógica condicional e desvios
O if else do PHP avalia uma expressão booleana e executa um entre dois ou mais blocos de código, dependendo do resultado. Use elseif para encadear condições adicionais quando os resultados são mutuamente exclusivos e dependem da ordem. Só o primeiro ramo correspondente é executado, então coloque primeiro a condição mais restritiva. Isso torna if/elseif/else a estrutura de controle padrão para qualquer lógica de desvio que dependa de verificações por faixa, expressões compostas ou tipos mistos.
Exemplo de if else em PHP para desvio condicional
Saída:
A saída aparecerá aqui...
Saída:
Nota: B
Como este exemplo funciona
$pontuacaoarmazena o valor inteiro82.- A condição
if$pontuacao >= 90é avaliada comofalse, então o PHP ignora esse bloco. - A condição
elseif$pontuacao >= 80é avaliada comotrue, então o PHP executa o segundo bloco e imprimeNota: B. - O bloco
elsenunca é executado porque um ramo anterior já correspondeu. O PHP para de avaliar a cadeia após a primeira condição verdadeira.
O que é elseif em PHP?
O elseif do PHP adiciona uma nova condição a um bloco if existente. O PHP avalia cada elseif em ordem e executa o primeiro que for true, então ignora o restante da cadeia. É possível empilhar quantos ramos elseif forem necessários, embora mais de três ou quatro normalmente indique que match ou um array de lookup ficaria mais limpo. Na sintaxe com chaves, else if (duas palavras) e elseif (uma palavra) se comportam de forma idêntica, mas na sintaxe alternativa (if: ... endif;) apenas elseif em uma palavra é válido.
Erros comuns com if else em PHP
Usar = em vez de == ou === nas condições
Errado:
if ($papel = "admin") { // atribui "admin" a $papel, sempre truthy
echo "Acesso concedido";
}
Certo:
if ($papel === "admin") {
echo "Acesso concedido";
}
A atribuição dentro de if altera a variável e retorna o valor atribuído, o que pode fazer o ramo executar incondicionalmente.
Confiar na indentação em vez de chaves (else pendente)
Errado:
if ($ehAdmin)
if ($estaAtivo)
echo "ok";
else
echo "não é admin"; // se associa ao if interno
Certo:
if (!$ehAdmin) {
echo "não é admin";
} elseif ($estaAtivo) {
echo "ok";
}
Sem chaves, else se associa ao if não correspondido mais próximo. Use chaves ou reestruture a lógica em uma única cadeia if/elseif/else.
If/Elseif do PHP vs Switch vs Match
| Recurso | if/elseif | switch | match (PHP 8+) |
|---|---|---|---|
| Tipo de comparação | Qualquer expressão | Frouxa (==) | Estrita (===) |
| Retorna valor | Não | Não | Sim |
| Fall-through | N/A | Sim, a menos que haja break | Não |
| Melhor para | Verificações por faixa, condições compostas | Muitos valores discretos com lógica compartilhada | Mapeamento estrito de valor para resultado |
Use if/elseif quando as condições envolverem faixas, lógica composta ou chamadas de função. Troque para match ao mapear valores discretos para resultados com comparação estrita. Use switch quando precisar de fall-through ou de blocos de instruções por case.
Mais exemplos
Cláusula de guarda para reduzir aninhamento:
function processar($entrada) {
if (!is_string($entrada)) {
return "tipo inválido";
}
if ($entrada === "") {
return "string vazia";
}
return strtoupper($entrada);
}
Retornos antecipados substituem árvores aninhadas de if/else, mantendo a lógica principal no nível superior de indentação.
Forma abreviada do operador ternário para atribuições simples com dois ramos:
$rotulo = ($contador > 0) ? "tem itens" : "vazio";
Quando o ramo produz um único valor, o operador ternário ? : substitui um bloco completo de if/else em uma expressão.
FAQ
Qual é a diferença entre elseif e else if em PHP?
Na sintaxe com chaves ({ }), ambos são equivalentes: o PHP trata else if como um else seguido de um if aninhado. Na sintaxe alternativa (if: ... endif;), apenas elseif em uma palavra compila. Prefira elseif em todos os lugares para evitar erros de sintaxe ao refatorar entre estilos.
Condições em PHP devem usar == ou ===?
== faz coerção de tipos: 0 == "foo" é true no PHP 7 (mudou para false no PHP 8 para strings não numéricas). === compara valor e tipo sem coerção. Prefira === para resultados previsíveis, especialmente com entrada de usuário ou dados de tipos mistos.
É possível ter vários ramos elseif em PHP?
Sim. O PHP permite ramos elseif ilimitados em uma única cadeia. Cada condição é verificada em ordem, e apenas o primeiro ramo verdadeiro é executado. Se nenhum corresponder e existir um else, ele atua como padrão. Quando a lista cresce além de quatro ou cinco ramos, match ou um array de lookup fica mais legível.