W3docs

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 4

Como $myNumber é 5, a condição $myNumber == 4 é false, então o controle passa para o bloco else.

"Experimente Você Mesmo" não está disponível para este exemplo.

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: B

A 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 runs

Use == 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: adult

Reserve 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 do if (ou elseif) precedente é falsy; exatamente um ramo é executado.
  • "Falsy" inclui false, 0, "", null e [] — não apenas o literal false.
  • Use elseif para mais de dois resultados, e a sintaxe com dois-pontos/endif dentro de templates HTML.
  • Fique atento à diferença entre = e ==, e use o ternário ?: quando precisar apenas escolher um valor.

Prática

Prática
O que a instrução 'else' indica em PHP?
O que a instrução 'else' indica em PHP?
Was this page helpful?