•  
     

Mergulhando nas instruções Switch - PHP

No editor, você pode ver uma simples instrução switch. Uma instrução switch é útil quando você tem uma sequência de instruções if/elseif/else com múltiplas expressões que dependem do mesmo valor. A instrução switch também provê eficiência e legibilidade. Switches funcionam como instruções if, se uma condição é verdadeira, um bloco de código é executado.

Código: Selecionar todos

<!DOCTYPE html>
<html>
	<head>
		<title></title>
	</head>
	<body>
    <?php
    switch (2) {
        case 0:
            echo 'O valor é 0';
            break;
        case 1:
            echo 'O valor é 1';
            break;
        case 2:
            echo 'O valor é 2';
            break;
        default:
            echo "O valor não é 0, 1 ou 2";
    }
    ?>
    </body>
</html>


Demo: http://codepad.org/7GHD4OQC



Sintaxe do Switch
Uma instrução switch é similar a uma instrução if / elseif / else na qual você pode verificar várias condições. Eis como ela se parece:

Código: Selecionar todos

$myNum = 2;

switch ($myNum) {
    case 1:
        echo "1";
        break;
    case 2:
        echo "2";
        break;
    case 3:
        echo "3";
        break;
    default:
        echo "Nenhuma das anteriores";
}

Uma instrução switch é composta pela palavra reservada switch, uma variável a ser verificada, e um par de chaves { }. Aqui verificamos o valor de $myNum.
Então temos um bloco case para cada comparação. Por exemplo case 1: echo "1"; break; verifica se $myNum é igual a 1. Se sim, ele exibe, usando echo, "1", e usa a instrução break para sair do switch.
Caso contrário, o próximo bloco case é executado.
Se todos os blocos case retornarem falso, o bloco case padrão default é executado.


Código: Selecionar todos

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<?php
$fruit = "Maçã";
    
switch($fruit){
case 'Apple':
echo "Yummy.";
break;
case 'Maçã':
echo "Achou a Maçã";
break;
case 'Tomate':
echo "Achou o Tomate";
break;
default:
echo "Não tem Maçã";
}   
?>
</body>
</html>


Demo: http://codepad.org/iPbDeLLA




Vários Cases. Falling Through!

Às vezes você quer fazer várias expressões, todas com o mesmo resultado. Considere a seguinte instrução if:

Código: Selecionar todos

if ($i == 1 ||
    $i == 2 ||
    $i == 3) {
 echo '$i está em algum lugar entre 1 e 3.';
}

Com uma instrução switch, você pode fazer isso adicionando um case após o outro sem usar o break. Essa técnica é chamada falling through (cair através de todos os cases). O código a seguir funciona exatamente como a instrução if acima:

Código: Selecionar todos

case 1:
case 2:
case 3:
    echo '$i está em algum lugar entre 1 e 3.';
    break;




Código: Selecionar todos

<!DOCTYPE html>
<html>
	<head>
		<title></title>
	</head>
	<body>
    <?php
    $i = 5;
    
    switch ($i) {
        case 0:
            echo '$i é 0.';
            break;
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
            echo '$i está entre 1 e  5.';
            break;
        case 6:
        case 7:
            echo '$i é 6 ou 7.';
            break;
        default:
            echo "Eu não sei quanto \$i vale.";
    }
    ?>
    </body>
</html>


Demo: http://codepad.org/HSZq7v5h