Switch em PHP

Nenhum produto encontrado nessa seleção.

Assim como você viu na aula anterior sobre if, else e elseif, switch também é utilizado para desvios condicionais no seu código PHP. Com ele é possível executar ações baseadas em uma, ou várias condições.

A diferença entre if/elseif/else e switch/case/default, está no modo em que o código é escrito, portanto, é muito importante que você leia a aula anterior para melhor entendimento sobre condicionais e operadores. Além disso, se você não especificar uma condição para o case do switch, ele fará uma comparação solta (com ==).

Switch em PHP

Para testar condições com switch em PHP, você deve seguir o formato abaixo:

switch ($variavel) {
    case (condição):
            Ação
        break;
}

Perceba que a cada condição, é necessário adicionar um novo caso (case) no seguinte formato:

case 'condição': ação

Neste caso a condição será verificada com o operador ==, ou seja:

$variavel == 'condição'

Se você precisar especificar uma condição diferente, pode fazer da seguinte maneira:

case (condição): ação

Exemplo:

case ( $variavel > 10 ): ação

É necessário especificar um caso (case) para cada condição:

switch ($variavel) {
    case (condição):
            Ação
        break;
    case ( outra condição):
            Outra Ação
        break;
    case ( outra condição):
            Outra Ação
        break;
    case ( outra condição):
            Outra Ação
        break;
    case ( outra condição):
            Outra Ação
        break;
}

Os cases são o mesmo que vários elseifs (detalhado na aula anterior).

Se você precisar de uma ação padrão caso nenhuma condição passe, a palavra default pode ser utilizada (o mesmo que else):

<?php
switch ($variavel) {
    case (condição):
        Ação;
        break;
    case (condição):
        Ação;
        break;
    case (condição):
        Ação;
        break;
    default:
        Ação Padrão;
}
?>

A palavra break serve para que o interpretador do PHP pare de testar as outras condições caso alguma delas passe, se você não utilizá-la o interpretador do PHP vai continuar testando todas as condições, mesmo se o seu objetivo já tiver sido atingido.

Exemplos

Crie um novo arquivo na sua pasta de cursos (como indiquei na primeira aula) e faça testes para aprimorar seus conhecimentos.

Veja alguns exemplos:

<?php
// Meu nome
$nome = 'Luiz Otávio';

// Comparação solta com ==
switch ( $nome ) {
	case 'João':
		echo $nome;
	break;
	case 'Maria':
		echo $nome;
	break;
	case 'Alan':
		echo $nome;
	break;
	case 'Luiz Otávio':
		echo $nome;
	break;
	default: 
		echo 'Não sei o nome';
} 
?>

No exemplo acima, a comparação é feita com o operador ==, pois, não especifiquei outro operador. Se eu fosse fazer o mesmo com if e else, ficaria assim:

// Comparação com if e else
if ( $nome == 'João' || $nome == 'Maria' || $nome == 'Alan' || $nome == 'Luiz Otávio' ) {
	echo $nome;
} else {
	echo 'Não sei o nome';
}

Por mais que eu tenha menos código, utilizar if e else faz com que ele fique desorganizado e difícil para ser lido neste caso.

Veja outro exemplo de utilização do switch:

<?php
$numero = 50;

switch ( $numero ) {
	case ( $numero > 100 ):
		echo 'Valor muito alto';
	break;
	case ( $numero < 80 && $numero > 51 ):
		echo 'Valor médio';
	break;
	case ( $numero === 50 ):
		echo 'Valor perfeito';
	break;
	case ( $numero <= 10 ):
		echo 'Valor muito baixo';
	break;
	case ( $numero == 0 ):
		echo 'Sem valor';
	break;
}
?>

Perceba que agora estou especificando os operadores que desejo utilizar nas condições, ou seja, ao invés de comparar valores com ==, posso colocar quantas condições eu quiser, e quantos operadores forem necessários.

Aulas anteriores

Veja todas as aulas, e mais, na categoria Curso de PHP do Tutsup.