W3docs

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.

php— editable, runs on the server

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. Escrever if ($number = 0) silenciosamente define $number como 0 e é 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.

php— editable, runs on the server

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

  • if executa um bloco quando sua condição é verdadeira; else fornece o fallback.
  • elseif encadeia condições adicionais, e o primeiro ramo verdadeiro vence.
  • Instruções if podem 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.

Prática

Prática
No PHP, como você pode implementar instruções condicionais?
No PHP, como você pode implementar instruções condicionais?
Was this page helpful?