Fundamentos do PHP
Estruturas Condicionais: if, else if, else e switch
Aprenda sobre estruturas condicionais: if, else if, else e switch
Módulo 2: Estruturas de Controle e Arrays
Aula: Estruturas Condicionais: if, else if, else e switch
Olá, futuro(a) desenvolvedor(a) PHP! 👋 Nesta aula, vamos mergulhar em um dos pilares fundamentais de qualquer linguagem de programação: as estruturas condicionais. Elas permitem que seu código tome decisões, executando blocos de instruções diferentes com base em condições específicas. Pense nelas como o "cérebro" do seu programa, decidindo qual caminho seguir! 🧠
Ao final desta aula, você será capaz de:
- Compreender a lógica por trás das estruturas condicionais.
- Utilizar as declarações
if,else ifeelsepara criar fluxos de execução controlados. - Aplicar a declaração
switchpara lidar com múltiplos casos de forma elegante.
Vamos começar!
1. Introdução às Estruturas Condicionais
Em PHP, assim como em outras linguagens, as estruturas condicionais são usadas para executar diferentes blocos de código dependendo se uma condição é verdadeira (true) ou falsa (false). Isso é essencial para criar programas dinâmicos e interativos que respondem a diferentes entradas ou estados.
Imagine que você está construindo um sistema de login. Você precisa verificar se o usuário digitou a senha correta. Se sim, ele é logado; se não, uma mensagem de erro é exibida. Essa "verificação" é feita usando estruturas condicionais.
As principais estruturas condicionais em PHP são:
ifelseelse if(ouelseif)switch
Vamos explorar cada uma delas em detalhes!
2. A Declaração if
A declaração if é a mais básica das estruturas condicionais. Ela executa um bloco de código somente se a condição especificada for verdadeira.
Sintaxe
<?php
if (condicao) {
// Código a ser executado se a condição for verdadeira
}
?>condicao: Uma expressão que é avaliada comotrueoufalse.{ ... }: O bloco de código que será executado. Se houver apenas uma linha de código, as chaves são opcionais, mas altamente recomendadas para clareza e para evitar erros futuros.
Como funciona?
O PHP avalia a condicao. Se o resultado for true, o código dentro das chaves {} é executado. Se for false, o bloco é ignorado e o programa continua a execução após o if.
Exemplo
<?php
$idade = 18;
if ($idade >= 18) {
echo "Você é maior de idade e pode dirigir. 🚗";
}
echo "\nFim da verificação de idade.";
?>Saída:
Você é maior de idade e pode dirigir. 🚗
Fim da verificação de idade.
Se $idade fosse 17, a mensagem "Você é maior de idade..." não seria exibida, mas "Fim da verificação..." ainda seria.
Valores "Truthy" e "Falsy" em PHP
É importante notar que, em PHP, algumas expressões são avaliadas como true ou false em um contexto booleano, mesmo que não sejam explicitamente true ou false.
Valores avaliados como false (falsy):
- O booleano
false - O inteiro
0(zero) - O float
0.0(zero ponto zero) - A string vazia
"" - A string
"0"(o caractere zero) - Um array vazio
[] - O valor especial
NULL - Objetos SimpleXML criados a partir de tags vazias
Qualquer outro valor é considerado true (truthy).
<?php
$variavel = "Olá Mundo"; // string não vazia
if ($variavel) {
echo "A variável é 'truthy'.\n"; // Esta linha será executada
}
$numero = 0; // inteiro zero
if ($numero) {
echo "O número é 'truthy'.\n"; // Esta linha NÃO será executada
}
$lista = []; // array vazio
if ($lista) {
echo "A lista é 'truthy'.\n"; // Esta linha NÃO será executada
}
?>3. A Declaração else
A declaração else é usada em conjunto com o if. Ela fornece um bloco de código alternativo para ser executado se a condição do if for falsa.
Sintaxe
<?php
if (condicao) {
// Código a ser executado se a condição for verdadeira
} else {
// Código a ser executado se a condição for falsa
}
?>Como funciona?
Primeiro, a condicao do if é avaliada.
- Se for
true, o bloco doifé executado e o bloco doelseé ignorado. - Se for
false, o bloco doifé ignorado e o bloco doelseé executado.
Exemplo
<?php
$hora = 14;
if ($hora < 12) {
echo "Bom dia! ☀️";
} else {
echo "Boa tarde! ☕";
}
echo "\nTenha um ótimo dia!";
?>Saída:
Boa tarde! ☕
Tenha um ótimo dia!
4. A Declaração else if (ou elseif)
Quando você precisa testar múltiplas condições em sequência, o else if (ou elseif) é a sua ferramenta. Ele permite adicionar condições adicionais entre o if inicial e um else final (opcional).
Sintaxe
<?php
if (condicao1) {
// Código se condicao1 for verdadeira
} elseif (condicao2) { // ou else if (condicao2)
// Código se condicao1 for falsa E condicao2 for verdadeira
} elseif (condicao3) {
// Código se condicao1 e condicao2 forem falsas E condicao3 for verdadeira
} else {
// Código se nenhuma das condições anteriores for verdadeira
}
?>Como funciona?
As condições são avaliadas em ordem, de cima para baixo.
- Se
condicao1fortrue, seu bloco é executado e o restante da estruturaif-elseif-elseé ignorado. - Se
condicao1forfalse,condicao2é avaliada. Secondicao2fortrue, seu bloco é executado e o restante é ignorado. - Esse processo continua para cada
elseif. - Se todas as condições
ifeelseifforemfalse, o blocoelse(se existir) é executado.
else if vs. elseif
Em PHP, else if e elseif são semanticamente idênticos. A diferença é apenas na sintaxe:
elseif(uma palavra) é a forma preferida e mais comum em PHP, especialmente quando se usa a sintaxe de dois pontos para estruturas de controle (veremos mais adiante).else if(duas palavras) é mais comum em linguagens como C ou Java.
Ambos funcionam perfeitamente.
Exemplo
<?php
$nota = 75;
if ($nota >= 90) {
echo "Parabéns! Sua nota é A. 🎉";
} elseif ($nota >= 80) { // Poderia ser 'else if ($nota >= 80)'
echo "Muito bom! Sua nota é B. 👍";
} elseif ($nota >= 70) {
echo "Bom trabalho! Sua nota é C. 📚";
} else {
echo "Você precisa estudar mais. Sua nota é D. 😔";
}
echo "\nVerificação de nota concluída.";
?>Saída:
Bom trabalho! Sua nota é C. 📚
Verificação de nota concluída.
5. A Declaração switch
A declaração switch é uma alternativa ao uso de múltiplos elseif quando você precisa comparar uma única expressão com vários valores diferentes. Ela pode tornar o código mais limpo e legível em certas situações.
Sintaxe
<?php
switch (expressao) {
case valor1:
// Código a ser executado se expressao == valor1
break; // Importante!
case valor2:
// Código a ser executado se expressao == valor2
break;
case valor3:
case valor4: // Múltiplos cases para o mesmo bloco
// Código a ser executado se expressao == valor3 ou expressao == valor4
break;
default:
// Código a ser executado se nenhum dos cases anteriores corresponder
break; // Opcional no final, mas boa prática
}
?>Como funciona?
- A
expressao(geralmente uma variável) é avaliada uma única vez. - O resultado da
expressaoé comparado sequencialmente com osvalores de cadacase. - Quando um
casecujovalorcorresponde àexpressaoé encontrado, o código dentro dessecaseé executado. - A palavra-chave
breaké crucial: ela encerra a execução doswitche o programa continua após ele. Sembreak, o PHP continuará executando o código doscases subsequentes (comportamento de "fall-through") até encontrar umbreakou o final doswitch. - Se nenhum
casecorresponder, o código dentro do blocodefault(se existir) é executado. Odefaulté opcional.
Exemplo
<?php
$diaDaSemana = "Terça";
switch ($diaDaSemana) {
case "Segunda":
echo "Início da semana! 😴";
break;
case "Terça":
case "Quarta":
case "Quinta":
echo "Meio da semana, foco! 💪";
break;
case "Sexta":
echo "Sextou! 🎉";
break;
case "Sábado":
case "Domingo":
echo "Fim de semana, descanse! 🏖️";
break;
default:
echo "Dia inválido.";
break;
}
echo "\nVerificação do dia concluída.";
?>Saída:
Meio da semana, foco! 💪
Verificação do dia concluída.
O perigo do "Fall-through" (sem break)
<?php
$nivel = 1;
switch ($nivel) {
case 1:
echo "Você é um iniciante. ";
case 2:
echo "Você tem acesso básico. ";
case 3:
echo "Você tem acesso total. ";
break; // Este break impede que vá para o default
default:
echo "Nível desconhecido.";
break;
}
echo "\n";
?>Saída:
Você é um iniciante. Você tem acesso básico. Você tem acesso total.
Como você pode ver, sem o break no case 1 e case 2, o código "cai" para o próximo case e executa suas instruções também. Isso pode ser útil em cenários muito específicos, mas na maioria das vezes é uma fonte de bugs se não for intencional. Sempre use break a menos que você tenha uma razão muito específica para não fazê-lo.
Sintaxe Alternativa para if, elseif, else e switch
PHP oferece uma sintaxe alternativa para estruturas de controle, usando dois pontos (:) em vez de chaves ({}) e endif;, endfor;, endwhile; ou endswitch; para finalizar. Esta sintaxe é frequentemente usada em arquivos de template HTML para melhorar a legibilidade.
Exemplo com if:
<?php
$logado = true;
?>
<!DOCTYPE html>
<html>
<head>
<title>Sintaxe Alternativa</title>
</head>
<body>
<?php if ($logado): ?>
<p>Bem-vindo(a) de volta!</p>
<?php else: ?>
<p>Por favor, faça login.</p>
<?php endif; ?>
</body>
</html>Exemplo com switch:
<?php
$cor = "azul";
?>
<!DOCTYPE html>
<html>
<head>
<title>Sintaxe Alternativa Switch</title>
</head>
<body>
<?php switch ($cor):
case "vermelho": ?>
<p style="color: red;">Sua cor favorita é vermelho.</p>
<?php break;
case "azul": ?>
<p style="color: blue;">Sua cor favorita é azul.</p>
<?php break;
default: ?>
<p>Não sei sua cor favorita.</p>
<?php break;
endswitch; ?>
</body>
</html>Essa sintaxe é uma questão de preferência e contexto. Em arquivos PHP puros, as chaves são mais comuns. Em templates misturando HTML e PHP, a sintaxe alternativa pode ser mais limpa.
6. Resumo e Próximos Passos
Parabéns! 🎉 Você dominou as estruturas condicionais em PHP.
- O
ifexecuta um bloco de código se uma condição for verdadeira. - O
elseoferece uma alternativa se a condição doiffor falsa. - O
else if(ouelseif) permite testar múltiplas condições em sequência. - O
switché ideal para comparar uma expressão com vários valores fixos, tornando o código mais limpo e legível em certos cenários, e obreaké essencial para evitar o "fall-through".
A capacidade de tomar decisões no seu código é fundamental para a lógica de qualquer aplicação. Pratique bastante com esses conceitos, pois eles serão a base para funcionalidades mais complexas.
No próximo módulo, vamos explorar as Estruturas de Repetição (Loops), que nos permitem executar blocos de código várias vezes, e os Arrays, que são estruturas de dados poderosas para armazenar coleções de informações.
Até a próxima aula! 🚀