Menu

PHP if, elseif e else: estruturas condicionais com exemplos

if (condition) { ... } executa um bloco só quando a condição é verdadeira, elseif verifica a próxima condição, e else roda quando nenhuma bateu. Veja elseif ou else if, && e ||, valores verdadeiros e a sintaxe if: endif; para templates HTML.

Esta página tem editores executáveis - edite, execute e veja a saída na hora.

if (condition) { ... } executa o bloco só quando a condição é verdadeira. Adicione elseif (other condition) { ... } para mais casos e else { ... } para todo o resto. O PHP verifica as condições de cima para baixo e executa só o primeiro bloco que bate.

Mude $temperature e rode de novo. Como as verificações vão de cima para baixo, 24 para na segunda condição e nunca chega a >= 10, mesmo que essa também seja verdadeira. Ordene as condições da mais específica para a mais geral.

elseif ou else if

Com chaves, elseif e else if fazem a mesma coisa. else if é tecnicamente um else cujo corpo é um novo if, mas o resultado é idêntico.

A diferença só aparece com a sintaxe de dois pontos usada em templates (próximas seções). Ali, else if quebra o código:

<?php $score = 72; ?>
<?php if ($score >= 90): ?>
    <p>A</p>
<?php else if ($score >= 60): ?>
    <p>Passed</p>
<?php endif; ?>
PHP Parse error:  syntax error, unexpected token "if", expecting ":" in /home/index.php on line 4

Escreva elseif como uma palavra só e você nunca verá esse erro.

Várias condições com && e ||

&& (e) precisa que os dois lados sejam verdadeiros, || (ou) precisa de pelo menos um, e ! inverte uma condição. O PHP para de avaliar assim que a resposta é conhecida, então em $user !== null && $user['active'] a segunda parte só roda quando existe um usuário.

Quando você misturar && e ||, adicione parênteses: && tem prioridade maior, e os parênteses deixam a intenção óbvia para quem ler depois. O PHP também tem as palavras-chave and e or, mas elas têm prioridade menor que =, então $ok = true and false; define $ok como true. Fique com && e ||.

O que conta como verdadeiro num if

A condição não precisa ser um booleano. O PHP a converte, e alguns valores contam como falsos: false, 0, 0.0, "", "0", [] e null. Todo o resto é verdadeiro, incluindo "false", " " e "0.0".

Como o if ($x) enxerga cada valor
Point at or tap a cell to read it as PHP.
$xboolempty
false
0
0.0
""
"0"
null
[]
" "
"0.0"
"a"
[0]
1
Every cell computed by PHP 8.3.19.

É por isso que if ($items) é um jeito comum de dizer "o array não está vazio". A linha do "0" é a que pega: um campo de formulário em que alguém digitou 0 é uma string não vazia, mas if ($_POST['qty']) a trata como falsa. Compare explicitamente (if ($qty !== '')) quando zero for uma resposta válida. As mesmas regras decidem o que o empty() retorna.

if else no HTML com if: e endif;

Entre tags HTML, as chaves se perdem fácil. O PHP tem uma sintaxe alternativa: dois pontos depois da condição, elseif ...: e else: para os outros ramos, e endif; no fim. Rode este bloco e clique nas notas da aba Page: cada link roda o mesmo script de novo com um novo $_GET['score'].

<?= $score ?> é a forma curta de <?php echo $score; ?>. O mesmo estilo com dois pontos existe para loops (foreach: endforeach;, while: endwhile;) e é o que a maioria dos templates PHP usa.

if de uma linha e o operador ternário

Uma única instrução pode vir depois da condição sem chaves. Funciona, mas a próxima linha que você adicionar não estará dentro do if, então muitos guias de estilo exigem chaves sempre. Para escolher um de dois valores, o operador ternário é mais curto que um if/else completo.

Quando há muitos valores exatos para comparar com uma variável, uma expressão match fica mais legível que uma longa cadeia de elseif.

Retorne cedo em vez de aninhar

Blocos if muito aninhados são difíceis de acompanhar. Dentro de uma função, verifique primeiro os casos de falha e dê return na hora. A lógica principal fica então na margem esquerda.

Erro comum: = em vez de == numa condição

Um único = atribui. if ($role = 'admin') guarda 'admin' em $role e depois testa essa string, que é verdadeira. O bloco roda para todos os usuários, e $role agora também está errado.

Use === nas comparações, a menos que você tenha um motivo para querer conversão de tipos. Algumas pessoas escrevem a constante primeiro (if ('admin' === $role)), para que um = faltando vire um erro em vez de uma atribuição silenciosa.

Perguntas frequentes

Qual a diferença entre elseif e else if no PHP?

Com chaves, eles se comportam igual: else if é um else cujo corpo é outro if. Com a sintaxe de dois pontos (if (...): ... endif;) só elseif funciona, e else if é um erro de sintaxe. Usar elseif em todo lugar evita a diferença.

Como verifico várias condições num if do PHP?

Junte-as com && (todas precisam ser verdadeiras) ou || (pelo menos uma): if ($age >= 18 && $hasTicket) { ... }. Use parênteses quando misturar os dois, por exemplo if ($isAdmin || ($isOwner && $isActive)).

Como escrevo um if numa linha só no PHP?

Uma única instrução pode vir depois da condição sem chaves: if ($debug) echo 'debug mode';. Para escolher entre dois valores numa linha, use o operador ternário: $label = $count === 1 ? 'item' : 'items';.

Como uso if else dentro do HTML no PHP?

Use a sintaxe alternativa, que fica legível entre tags HTML: <?php if ($loggedIn): ?> <p>Welcome back</p> <?php else: ?> <a href="/login">Log in</a> <?php endif; ?>.

Ilustração das linguagens de programação do Coddy

Aprenda a programar com o Coddy

COMEÇAR