O condicional simples é feito apenas com a declaração if
(significando "se") é usado para especificar um bloco de código que deverá ser executado, ao retornar true. O condicional composto é feito com o if junto com o else
(significando "senão"). O else se usa para executar um segundo bloco de código ao retornar false. Existe ainda o condicional composto alinhando, que entre o if e o else tem o else if
. O else if executa um segundo código ao if retornar false, antes de executar o else.
No PHP, se usa muito o operador ternário, mas em certos casos é necessário usar o condicional if e else, como podemos usar os dois juntos. Veja um exemplo:
Código HTML:
<form method="get" action="testes.php">
Ano de Nascimento: <input type="number" name="ano" min="1900" max="2017" value="1900"/>
<input type="submit" value="Verificar"/>
</form>
PHP na segunda página:
$ano = isset($_GET["ano"]) ? (int)$_GET["ano"] : 1990;
$idade = date("Y") - $ano;
echo "Você nasceu em $ano e tem $idade.<br/>";
if($idade >= 18) {
$v = "já pode votar";
$d = "já pode dirigir";
}
else {
$v = "não pode votar";
$d = "não pode dirigir";
}
echo "Com essa idade você $v e $d.";
Mas vamos considerar a situação de que existe votos opcionais, podemos usar condições aninhadas para resolver isso no condicional (que são condições dentro das outras), dessa forma:
$ano = isset($_GET["ano"]) ? (int)$_GET["ano"] : 1990;
$idade = date("Y") - $ano;
echo "Você nasceu em $ano e tem $idade.<br/>";
if($idade < 16) {
$tipoVoto = "não vota";
}
else {
if(($idade >= 16 && $idade < 18) || ($idade > 70)) {
$tipoVoto = "voto opcional";
}
else {
$tipoVoto = "voto obrigatório";
}
}
echo "Com essa idade, $tipoVoto.";
Podemos simplificar essa opção usando o else if, assim:
$ano = isset($_GET["ano"]) ? (int)$_GET["ano"] : 1990;
$idade = date("Y") - $ano;
echo "Você nasceu em $ano e tem $idade.<br/>";
if($idade < 16) {
$tipoVoto = "não vota";
}
else if(($idade >= 16 && $idade < 18) || ($idade > 70)) {
$tipoVoto = "voto opcional";
}
else {
$tipoVoto = "voto obrigatório";
}
echo "Com essa idade, $tipoVoto.";
Agora vamos ver um exemplo calculando a média de duas notas de um aluno:
HTML na primeira página:
<form method="get" action="testes.php">
Nota 1: <input type="number" name="n1" min="0" max="10" value="0"/>
Nota 1: <input type="number" name="n2" min="0" max="10" value="0"/>
<input type="submit" value="Calcular Média"/>
</form>
PHP na segunda página:
$n1 = isset($_GET["n1"]) ? (float)$_GET["n1"] : 0;
$n2 = isset($_GET["n2"]) ? (float)$_GET["n2"] : 0;
$m = ($n1 + $n2) / 2;
if($m >= 8) {
$nota = "<span style='color: green'>APROVADO! PARABÉNS!</span>";
}
else if($m >= 5 && $m < 8) {
$nota = "<span style='color: yellow'>EM RECUPERAÇÃO!</span>";
}
else {
$nota = "<span style='color: red'>REPROVADO!</span>";
}
echo "A sua média é de $m.<br/>";
echo "Sua Situação: $nota";
A declaração condicional switch
(chaveamento) é usada quando é preciso realizar diferentes ações baseadas em distintas condições. Pra simplificar o código, geralmente se usa no lugar de um condicional aninhado.
O case
é o valor comparado com a expressão, se corresponder, o código associado será executado. O break
garante que a estrutura seja finaliza ao encontrar uma correspondência. E o default
é o bloco de códigos que será executado se nenhum caso corresponder à expressão.
Veja que depois do case e do default, nesse caso, se usa dois pontos :
, e que ele diferencia minúsculas e maiúsculas, veja um exemplo de estrutura condicional:
HTML na primeira página:
<form method="get" action="testes.php">
Número: <input type="number" name="num" value="0"/>
<fieldset style="width: 300px">
<legend>Operação</legend>
<input type="radio" name="oper" id="dobro" value="1" checked/>Dobro
<input type="radio" name="oper" id="cubo" value="2"/>Cubo
<input type="radio" name="oper" id="raiz" value="3"/>Raiz
</fieldset>
<input type="submit" value="Calcular"/>
</form>
PHP na segunda página:
$n = isset($_GET["num"]) ? (int)$_GET["num"] : 0;
$o = isset($_GET["oper"]) ? (int)$_GET["oper"] : 1;
switch($o) {
case 1:
$r = $n * 2;
break;
case 2:
$r = pow($n, 3);
break;
case 3:
$r = sqrt($n);
break;
default:
$r = "Operação Inválida";
break;
}
echo "O resultado da operação solicitada foi <b>$r</b>."
O case só suporta um valor, no entanto, quando queremos citar mais de um caso, podemos fazer algo como nesse exemplo:
HTML:
<form method="get" action="testes.php">
Dia da Semana: <input type="number" name="ds" min="1" max="7" value="2"/>
<input type="submit" value="Analisar"/>
</form>
PHP na segunda página:
$d = isset($_GET["ds"]) ? (int)$_GET["ds"] : 0;
switch($d) {
case 2:
case 3:
case 4:
case 5:
case 6:
echo "É Dia de Estudar!";
break;
case 1:
case 7:
echo "É Dia de Descansar!";
break;
default:
echo "Dia Inválido!";
break;
}
Agora vamos criar um formulário com select para selecionar os estados e verificar em qual região do Brasil ele fica. Coloque as siglas referentes às regiões no value de cada option.
Esse é o HTML da primeira página:
<form method="get" action="testes.php">
Estado:
<select name="est">
<option value="NO">Acre</option>
<option value="NE">Alagoas</option>
<option value="NO">Amapá</option>
<option value="NO">Amazonas</option>
<option value="NE">Bahia</option>
<option value="NE">Ceará</option>
<option value="CO">Distrito Federal</option>
<option value="SE">Espírito Santo</option>
<option value="CO">Goiás</option>
<option value="NE">Maranhão</option>
<option value="CO">Mato Grosso</option>
<option value="CO">Mato Grosso do Sul</option>
<option value="SE">Minas Gerais</option>
<option value="NO">Pará</option>
<option value="NE">Paraíba</option>
<option value="SU">Paraná</option>
<option value="NE">Pernambuco</option>
<option value="NE">Piauí</option>
<option value="SE">Rio de Janeiro</option>
<option value="NE">Rio Grande do Norte</option>
<option value="SU">Rio Grande do Sul</option>
<option value="NO">Rondônia</option>
<option value="NO">Roraima</option>
<option value="SU">Santa Catarina</option>
<option value="SE" selected>São Paulo</option>
<option value="NE">Sergipe</option>
<option value="NO">Tocantins</option>
</select>
<input type="submit" value="Verificar"/>
</form>
E esse é o PHP da segunda página:
$est = isset($_GET["est"]) ? $_GET["est"] : null;
switch($est) {
case "NO":
$reg = "Região Norte";
break;
case "NE":
$reg = "Região Nordeste";
break;
case "CO":
$reg = "Região Centro-Oeste";
break;
case "SE":
$reg = "Região Sudeste";
break;
case "SU":
$reg = "Região Sul";
break;
default:
$reg = "Região Desconhecida";
break;
}
echo "O estado solicitado fica na $reg";