switch

A instrução switch é similar a uma série de instruções IFs seguidas . Em muitas ocasiões , você poderá ter que comparar a mesma variável ( ou expressão ) com muitos valores diferentes , executando códigos diferentes dependendo com qual valor ele se encaixar . É exatamente para isso que a instrução switch faz .

Os exemplos seguintes mostram duas maneiras diferentes de escrever a mesma coisa , uma utilizando uma série de is s e a outra utlizando a instrução switch :

 
if

 
(

 
$i

 
==

 
0

 
)

 
{

 
print

 
"i

 
igual

 
a

 
0"

 
;

 
}

 
if

 
($i

 
==

 
1

 
)

 
{

 
print

 
"i

 
igual

 
a

 
1"

 
;

 
}

 
if

 
($i

 
==

 
2

 
)

 
{

 
print

 
"i

 
igual

 
a

 
2"

 
;

 
}

 
switch

 
($i

 
)

 
{

 
case

 
0

 
:

 
print

 
"i

 
igual

 
a

 
0"

 
;

 
break

 
;

 
case

 
1

 
:

 
print

 
"i

 
igual

 
a

 
1"

 
;

 
break

 
;

 
case

 
2

 
:

 
print

 
"i

 
igual

 
a

 
2"

 
;

 
break

 
;

 
}





É importante entender como a instrução switch funciona para evitar enganos . A instrução switch executa linha a linha ( atualmente , instrução a instrução ) . No início , nenhum código é executado . Somente quando uma instrução case é encontrada com um valor que combina com a expressão do switch faz com que o PHP execute as instruções a partir daí . O PHP continua executando as instruções até o fim do bloco switch ou na primeira vez que encontrar uma instrução break . Se você não escrever uma instrução break no fim das instruções case , o PHP continuará executando os case s seguintes . Exemplo :

 
switch

 
(

 
$i

 
)

 
{

 
case

 
0

 
:

 
print

 
"i

 
igual

 
a

 
0"

 
;

 
case

 
1

 
:

 
print

 
"i

 
igual

 
a

 
1"

 
;

 
case

 
2

 
:

 
print

 
"i

 
igual

 
a

 
2"

 
;

 
}





Aqui , se $i é igual a zero , o PHP executará todas as instruções print! . Se $i é igual a 1 , o PHP executará os últimas duas instruções print , e somente se $i for igual a 2 , você terá o comportamento ' esperado ' apenas onde 'i igual a 2 ' será mostrado . Então é importante não se esquecer das instruções break ( e as vezes não colocá-las para obter esse resultado em certas circunstâncias ) .

Em uma instrução switch , a condição somente será avaliada e resultado comparado para cada instrução case . Em uma instrução elseif , a condição é avaliada novamente . Se sua condição é mais complicada que um simples comparação e / ou e dentro de um loop , um switch é mais rápido .

Um case pode não ter nenhuma instrução dentro , o que simplesmente passa o controle para o próximo case .

 
switch

 
(

 
$i

 
)

 
{

 
case

 
0

 
:

 
case

 
1

 
:

 
case

 
2

 
:

 
print

 
"i

 
é

 
menor

 
que

 
3

 
mas

 
não

 
negativo"

 
;

 
break

 
;

 
case

 
3

 
:

 
print

 
"i

 
é

 
3"

 
;

 
}





Um case especial é o default . Esse case é executado quando nenhum outro case combina . Ele precisa ser a última instrução case . Por exemplo :

 
switch

 
(

 
$i

 
)

 
{

 
case

 
0

 
:

 
print

 
"i

 
igual

 
a

 
0"

 
;

 
break

 
;

 
case

 
1

 
:

 
print

 
"i

 
igual

 
a

 
1"

 
;

 
break

 
;

 
case

 
2

 
:

 
print

 
"i

 
igual

 
a

 
2"

 
;

 
break

 
;

 
default

 
:

 
print

 
"i

 
não

 
é

 
igual

 
a

 
0

 
,

 
1

 
ou

 
2"

 
;

 
}





A expressão avaliada pelo case A expressão avaliada pelo case precisa ser um tipo simples , ou seja , inteiros , números de ponto flutuante e strings . Arrays ou objetos não podem ser utilizados a não ser que eles impliquem num tipo simples .

A sintaxe alternativa para estruturas de controle é suportada para os switches . Para maiores informações , veja Sintaxe alternativa para estruturas de controle .

 
switch

 
(

 
$i)

 
:

 
case

 
0

 
:

 
print

 
"i

 
igual

 
a

 
0"

 
;

 
break

 
;

 
case

 
1

 
:

 
print

 
"i

 
igual

 
a

 
1"

 
;

 
break

 
;

 
case

 
2

 
:

 
print

 
"i

 
igual

 
a

 
2"

 
;

 
break

 
;

 
default

 
:

 
print

 
"i

 
não

 
é

 
igual

 
a

 
0

 
,

 
1

 
ou

 
2"

 
;

 
endswitch

 
;