Olá Pessoal,
Gostando do minicurso? Espero que sim. Contribuam para o Projetista Digital postando suas dúvidas, comentários e sugestões na seção de comentários. Gostamos muito de recebê-los. Aviso dado, voltemos com a programação normal.
Conforme prometido trataremos hoje de estruturas condicionais em PHP. As condicionais nos permitem dotar os nossos programas de poder decisório. Ou seja, é possível tomar uma decisão ou outra, baseado numa condição ser ou não satisfeita.
IF – ELSE IF – ELSE
A estrutura condicional básica do PHP é o “if”. O IF possui um bloco de instruções delimitadas por { e }, a ser executado caso uma condição em parênteses seja ou não satisfeita. Veja o código abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php $a = 5; $b = 10; //Verifico se os números são iguais if ($a == $b) { echo "São iguais"; } //Verifico se são diferentes if ($a <> $b) { echo "São diferentes"; } //Verifico se não são idênticos if ($a > $b) { echo "A é maior do que B"; } ?> |
Reparou que o bloco de código entre { e } só é executado caso a condição dada entre parênteses retorne um valor lógico TRUE? Pois é. O IF funciona dessa forma: analisa uma ou várias condições entre parênteses, caso o booleano retornado seja TRUE, ele executa o código entre chaves ( { e } ), caso o valor seja FALSE ele não executa nada… E se eu quiser executar um outro bloco de instruções caso a condição retorne FALSE? Para isso usamos uma outra estrutura chamada ELSE. O ELSE possui seu próprio de bloco instruções, delimitados por { e }, que somente será executado caso a condição analisada no IF retorne FALSE. É uma estrutura opcional para complementar o IF. A idéia geral é SE condição for verdadeira EXECUTE esse bloco de instruções CASO CONTRÁRIO execute esse outro bloco de instruções. Veja o código abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?php $a = 5; $b = 10; //Verifico se os números são iguais if ($a == $b) { echo "São iguais"; } else { echo "São diferentes"; } //Verifico se são diferentes if ($a <> $b) { echo "São diferentes"; } else { echo "São iguais"; } //Verifico se não são idênticos if ($a > $b) { echo "A é maior do que B"; } else { echo "B é maior do que A"; } ?> |
Simples, né? Vamos continuar. E se eu precisar analisar uma série de condições simultaneamente? Vamos analisar as alternativas descritas nos códigos abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | <?php $nome = "Diego"; //Analiso várias expressões em uma única condicional if ($nome == "Diogo" || $nome == "Rafael" || "$nome == "Diego") { echo "Nome válido"; } else { echo "Entre com um nome válido"; } //Analiso várias condições em condicionais distintas, usando a estrutura ELSE IF (Senão Se) para analisar condicionais alternativas if ($nome == "Diogo") { echo "Seu nome é Diogo"; } else if ($nome == "Rafael") { echo "Seu nome é Rafael"; } else if ("$nome == "Diego") { echo "Seu nome é Diego"; } else { echo "Entre com um nome válido"; } //Analiso as condições fazendo uso de IFs aninhados $idade = 23; $programador = TRUE; if ($nome == "Diogo" || $nome == "Rafael" || "$nome == "Diego") { if($idade > 18) { if ($programador) { echo "Seu nome é $nome, é maior de idade e trabalha como Programador"; } } } ?> |
Repararam no funcionamento dos IFs aninhados? As condições IDADE e PROGRAMADOR somente serão verificados se a primeira condição (NOME) for satisfeita. Esse tipo de estrutura é muito útil para projetos futuros. Outra novidade é o ELSE IF. Isso permite que analisemos várias condições, executando blocos de instruções diferentes para cada uma delas.
OPERADOR TERNÁRIO
Existe ainda uma forma compacta de escrever a estrutura condicional básica (IF – ELSE): o operador ternário. O operador ternário funciona da seguinte forma – $variavel = (condição) ? “valor 1″ : “valor 2″, onde $variavel é o nome da variável que receberá o valor, “condição” é uma condição a ser avaliada, “valor 1″ é o valor atribuído à “$variavel” caso a condição retorne TRUE, e “valor 2″ é o valor atribuído à “$variável” caso a condição retorne FALSE. Veja o código abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php $idade = 18; //Iremos reescrever essa condicional em uma linha apenas, usando operador ternário if ($idade >= 18) { $status = "Maior de Idade"; } else { $status = "Menor de Idade"; } echo $status; //Usando o operador ternário $status = ($idade >= 18) ? "Maior de Idade" : "Menor de Idade"; echo $status; ?> |
Legal, né? E bem simples de entender. O operador ternário nada mais é do que uma forma resumida e compacta de escrever um IF – ELSE para armazenar um valor em uma variável. Percebam que ele tem uma aplicação bem específica: atribuição de valores. Não é um substituto do IF – ELSE, apenas uma alternativa para um dado tipo de aplicação.
SWITCH – CASE
A terceira forma de trabalhar com condicionais em PHP é o comando switch. Nada mais é do que a comparação de uma variável a uma série de valores. Seu funcionamento corresponde a uma série de IFs um embaixo do outro. A estrutura do switch é a seguinte:
switch (variável) {
case valor1:
Bloco de Instruções
case valor2:
Outro bloco de instruções
…
case valor n:
Bloco de Instruções N
default:
Bloco de Instruções Default
}
Em cada cláusula “case” analisamos um valor possível para “variável”, e caso seja retornado TRUE na comparação executamos o bloco de instruções correspondente. Caso todos os “case” retornem FALSE é executada a cláusula “default” (parecido com o ELSE). Veja um exemplo prático de switch:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php $acao = "inserir"; switch ($acao) { case "inserir": echo "A ação escolhida foi INSERIR"; case "atualizar: echo "A ação escolhida foi ATUALIZAR"; case "apagar": echo "A ação escolhida foi APAGAR"; default: echo "Escolha uma ação válida"; } ?> |
Ops… Que foi? O swtich não funcionou? Relaxa… Quando não aplicamos o comando “break” ao fim de cada “case”, o switch não entende que precisa parar naquele ponto, e continua executando o código até o fim (cláusula “default”). Agora veja como ficará o nosso código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php $acao = "inserir"; switch ($acao) { case "inserir": echo "A ação escolhida foi INSERIR"; break; case "atualizar: echo "A ação escolhida foi ATUALIZAR"; break; case "apagar": echo "A ação escolhida foi APAGAR"; break; default: echo "Escolha uma ação válida"; } ?> |
Agora sim. Tudo funcionando! Pois bem, com isso fechamos o tema estruturas condicionais. Amanhã falaremos sobre LOOPS e sábado sobre FUNÇÕES. Fechando esse ciclo de INTRODUÇÃO AO PHP. Já na segunda falaremos sobre passagem de parâmentros entre páginas (GET e POST), formulários PHP e envio de emails com PHP. Portanto, continuem visitando o Projetista Digital diariamente.
Abraços,
Diego.
Estou com dificuldade em entender a diferença entre igual e idêntico. Também entre diferente e não idênticos. Alguém se habilita a esclarecer? Obrigado