Condicionais

Um programa não segue apenas um caminho único — ele precisa realizar diferentes ações em diferentes condições. “Se o usuário estiver conectado, mostre o perfil dele; caso contrário, mostre um botão de login” — essa é a essência da lógica condicional.

1. A instrução if

A forma mais simples de tomada de decisão: executar um bloco de código quando uma condição for true.

PHP
<?php
$score = 85;

if ($score >= 60) {
    echo "You passed!";
}
?>
💡 Dica: A condição dentro do if do () é, em última instância, convertida em um valor booleano. Strings vazias, 0, "0", null e matrizes vazias são todas false — todo o restante é true. (Revise as regras de conversão booleana da Lição 4.)


2. Instrução if...else

Um caminho quando a condição for verdadeira, outro quando for falsa:

PHP
<?php
$age = 16;

if ($age >= 18) {
    echo "Welcome!";
} else {
    echo "Minors are not allowed.";
}
?>

3. if...elseif...else — Ramificações múltiplas

PHP
<?php
$score = 85;

if ($score >= 90) {
    echo "Excellent";
} elseif ($score >= 80) {
    echo "Good";
} elseif ($score >= 70) {
    echo "Average";
} elseif ($score >= 60) {
    echo "Pass";
} else {
    echo "Fail";
}
?>
⚠️ Atenção: O PHP usa elseif (uma palavra), embora else if (duas palavras) também funcione. Ambas produzem o mesmo resultado, mas elseif é a forma oficialmente recomendada.


4. A instrução switch

Quando há muitos ramos de correspondência exata, switch fica mais claro do que uma longa sequência de if/elseif:

PHP
<?php
$day = "Wednesday";

switch ($day) {
    case "Monday":
        echo "A new week begins!";
        break;
    case "Friday":
        echo "Weekend is almost here!";
        break;
    case "Saturday":
    case "Sunday":
        echo "Enjoy your weekend!";
        break;
    default:
        echo "Keep pushing through the workweek!";
}
?>
Matéria Notas
case O valor a ser comparado — utiliza a comparação aproximada ==
break Sai do switch — esquecer isso faz com que o controle de fluxo passe para o próximo caso
default É executado quando nenhum caso corresponde (opcional)
Omissão intencional Omitir break deliberadamente quando vários casos compartilham um mesmo bloco de código
🔥 Erro comum: Esquecer break causa o “fall-through” — o código do caso seguinte também é executado! O switch do PHP não possui um break automático.


5. A expressão match (PHP 8.0)

O PHP 8 introduziu o match, uma alternativa moderna, mais segura e mais concisa ao switch:

▶ Exemplo: match x switch

PHP
<?php
$day = "Wednesday";

$message = match($day) {
    "Monday" => "A new week begins!",
    "Friday" => "Weekend is almost here!",
    "Saturday", "Sunday" => "Enjoy your weekend!",
    default => "Keep pushing through the workweek!",
};

echo $message;  // Keep pushing through the workweek!
?>
▶ Experimente

Três vantagens principais do match em relação ao switch:

switch match
Comparação == (flexível) === (rigoroso)
Valor de retorno Nenhum (é preciso usar break e atribuir manualmente) ✅ Retorna o resultado diretamente
Passagem direta ⚠️ Passagem direta (precisa de uma pausa) ✅ Sem passagem direta
Padrão default (opcional) default (obrigatório; caso contrário, ocorrerá um erro)
Várias condições Truque de “fall-through” 'A', 'B' => ... separadas por vírgulas

▶ Exemplo: comparação estrita

PHP
<?php
$code = 200;
$httpCode = "200";  // Note: this is a string

// match uses === strict comparison
$result = match($code) {
    200 => "Success",       // $code === 200 is true
    default => "Other",
};
echo $result;  // Success

// switch uses == loose comparison — both would match
?>
▶ Experimente
💡 Dica: No PHP 8.0 ou superior, dê preferência a match. Recorra a switch apenas quando for necessário utilizar lógica complexa dentro de cada caso (por exemplo, várias instruções).


6. Combinação de expressões condicionais com HTML

Esse é o padrão mais comum do PHP para páginas da web — use a sintaxe alternativa para tornar as condições mais legíveis dentro do HTML:

PHP
<?php
$isLogin = true;
?>

<!-- Alternative syntax: colon + endif -->
<?php if ($isLogin): ?>
    <div class="user-info">
        <img src="avatar.jpg">
        <span>Welcome back, John!</span>
        <a href="/logout.php">Log out</a>
    </div>
<?php else: ?>
    <div class="login-btn">
        <a href="/login.php">Log in</a>
    </div>
<?php endif; ?>
Sintaxe padrão Sintaxe alternativa (recomendada em HTML)
if () { } if (): ... endif;
if () { } else { } if (): ... else: ... endif;
if () { } elseif () { } else { } if (): ... elseif (): ... else: ... endif;
foreach () { } foreach (): ... endforeach;
while () { } while (): ... endwhile;
for () { } for (): ... endfor;

▶ Exemplo: Condicionais + HTML combinados

PHP
<?php
$vip = true;
$balance = 800;
?>

<!DOCTYPE html>
<html>
<body>
    <?php if ($vip): ?>
        <div class="vip-badge">VIP Member</div>
    <?php endif; ?>

    <?php if ($balance > 500): ?>
        <button>Withdraw Now</button>
    <?php elseif ($balance > 0): ?>
        <p>Balance is under $500. Withdrawal unavailable.</p>
    <?php else: ?>
        <p>Balance is zero. Top up to continue!</p>
    <?php endif; ?>
</body>
</html>
▶ Experimente
💡 Dica: Ao escrever condições em modelos HTML, a sintaxe alternativa (if (): ... endif;) é muito mais legível do que as chaves ({}). Com as chaves, é preciso contar os pares para saber onde termina um if; com endif;, isso fica imediatamente claro.

❓ Perguntas Frequentes

P: Como escolho entre switch e match? R: No PHP 8.0 e versões posteriores, dê preferência ao match — ele é mais seguro (comparação estrita ===), mais conciso (valor de retorno direto) e não apresenta fall-through. Use o switch apenas quando precisar de uma lógica complexa com várias instruções dentro de cada caso.

P: E se meu if tiver muitos níveis de aninhamento? R: Se você ultrapassar 3 níveis de aninhamento, é hora de refatorar. Tente: (1) retornos antecipados (cláusulas guard); (2) combinar condições em uma única variável; ou (3) usar match em vez de cadeias profundas de if/elseif.

P: Existe alguma diferença entre else if e elseif? R: Não há diferença funcional. elseif é a palavra-chave nativa do PHP (recomendada). else if é uma forma aninhada. Ambas funcionam da mesma maneira.

📖 Resumo

📝 Exercícios

  1. Escreva um programa de avaliação de notas: 90+ = A, 80–89 = B, 70–79 = C, 60–69 = D, abaixo de 60 = F. Implemente-o uma vez com if/elseif e outra com match e, em seguida, compare as duas abordagens.
  2. Crie uma página da web simulada que utilize a sintaxe alternativa para exibir conteúdos diferentes de acordo com o status do usuário: se o usuário não estiver conectado, exiba um botão de login; se estiver conectado, exiba o nome de usuário e um link para sair; se estiver conectado E for VIP, exiba adicionalmente um emblema VIP.
  3. Escreva um verificador de anos bissextos: um ano é bissexto se for divisível por 4, mas não por 100, ou se for divisível por 400.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%