else
A palavra-chave "else" é uma estrutura de controle em PHP usada junto com "if" para executar um bloco de código quando a condição "if" é falsa.
A Palavra-chave PHP else
else é o complemento da instrução if do PHP. Sozinho, o if decide apenas se um bloco de código deve ser executado; combinado com else, você fornece um caminho alternativo que é executado sempre que a condição if é avaliada como false. Juntos, expressam uma ramificação clara: "faça isso — caso contrário, faça aquilo."
Esta página cobre a sintaxe exata, a diferença entre else, elseif e uma cadeia de ifs, a sintaxe alternativa com dois-pontos usada em templates HTML, e as armadilhas comuns (como confundir = com ==).
Sintaxe
Um bloco else só pode aparecer imediatamente após um if (ou após um elseif). Ele não possui condição própria:
<?php
if (condition) {
// runs when condition is truthy
} else {
// runs when condition is falsy
}Exatamente um dos dois blocos é executado, nunca ambos e nunca nenhum. O ramo else captura tudo que a condição if não capturou — portanto, não é necessário escrever manualmente a condição oposta.
Um exemplo básico
<?php
$myNumber = 5;
if ($myNumber == 4) {
echo "Number is 4";
} else {
echo "Number is not 4";
}
// Output: Number is not 4Como $myNumber é 5, a condição $myNumber == 4 é false, então o controle passa para o bloco else.
O que conta como "falso"?
O bloco else é executado sempre que a condição if é falsy — não apenas quando é literalmente false. PHP trata os seguintes valores como falsy: false, 0, 0.0, "0", "" (string vazia), null e o array vazio []. Tudo o mais é truthy.
<?php
$cart = [];
if ($cart) {
echo "You have items in your cart.";
} else {
echo "Your cart is empty."; // an empty array is falsy
}
// Output: Your cart is empty.Isso é útil para verificações do tipo "há algo aqui?", mas seja cuidadoso: "0" e 0 são falsy, então um valor que você realmente quer verificar pode acabar no ramo else. Quando precisar de um teste exato, compare explicitamente (if ($x === 0)) em vez de depender de truthiness.
else vs elseif vs ifs separados
Um simples if/else tem apenas dois resultados. Quando você precisa de mais de dois, use elseif em vez de empilhar instruções if independentes:
<?php
$score = 72;
if ($score >= 90) {
echo "Grade: A";
} elseif ($score >= 70) {
echo "Grade: B";
} else {
echo "Grade: C or lower";
}
// Output: Grade: BA cadeia para no primeiro ramo que corresponde, portanto a ordem importa — coloque as condições mais específicas ou mais altas primeiro. Usar dois blocos if separados avaliaria ambas as condições de forma independente e poderia imprimir duas notas. Veja PHP if, else, elseif para uma comparação mais completa.
Sintaxe alternativa (com dois-pontos)
Quando você mistura PHP com HTML em um template, o estilo com chaves pode ser difícil de ler. PHP oferece uma sintaxe alternativa que substitui { por : e fecha o bloco com endif:
<?php $loggedIn = true; ?>
<?php if ($loggedIn): ?>
<p>Welcome back!</p>
<?php else: ?>
<p>Please log in.</p>
<?php endif; ?>Ambos os estilos se comportam de forma idêntica; a forma com dois-pontos apenas mantém os templates mais organizados.
Aninhamento
Um if/else pode estar dentro de outro ramo else. Cada else sempre se liga ao if não correspondido mais próximo:
<?php
$age = 17;
$hasGuardian = true;
if ($age >= 18) {
echo "Admitted.";
} else {
if ($hasGuardian) {
echo "Admitted with a guardian.";
} else {
echo "Not admitted.";
}
}
// Output: Admitted with a guardian.Se você perceber que está aninhando mais de um ou dois níveis, elseif ou uma instrução switch geralmente fica mais legível.
Armadilha comum: = vs ==
Um erro frequente é escrever = (atribuição) onde se pretendia == (comparação). A linha abaixo atribui 4 a $x, e como 4 é truthy, o ramo if sempre é executado — o else se torna inacessível:
<?php
$x = 1;
if ($x = 4) { // assignment, not comparison!
echo "Always runs";
} else {
echo "Never runs";
}
// Output: Always runsUse == para comparação solta ou === para comparação estrita (com verificação de tipo). A página de operadores de comparação lista todos eles.
Ternário: uma forma abreviada para casos simples
Quando ambos os ramos apenas produzem um valor, o operador ternário ?: é uma alternativa compacta a um if/else completo:
<?php
$age = 20;
$status = $age >= 18 ? "adult" : "minor";
echo $status;
// Output: adultReserve isso para decisões curtas de valor único — lógica com múltiplas instruções fica mais clara como um if/else de verdade.
Resumo
elseé executado apenas quando a condição doif(ouelseif) precedente é falsy; exatamente um ramo é executado.- "Falsy" inclui
false,0,"",nulle[]— não apenas o literalfalse. - Use
elseifpara mais de dois resultados, e a sintaxe com dois-pontos/endifdentro de templates HTML. - Fique atento à diferença entre
=e==, e use o ternário?:quando precisar apenas escolher um valor.