⊗ppPmCdBNM 100 of 447 menu

A opcionalidade do break em PHP

A instrução break é opcional. No entanto, sem ela, o comportamento dos blocos case será inesperado. Vamos ver um exemplo. Suponha que temos o seguinte código:

<?php $num = 1; switch ($num) { case 1: echo 1; break; case 2: echo 2; break; case 3: echo 3; break; } ?>

Vamos remover todos os break e, para começar, atribuir o número 3 à variável $num.

Por enquanto, tudo funcionará como antes:

<?php $num = 3; // vamos supor o número 3 aqui switch ($num) { case 1: echo 1; case 2: echo 2; case 3: echo 3; } // Após a execução, o código exibirá 3 - tudo certo ?>

Agora, vamos atribuir o número 2 à variável $num. Neste caso, o case 2 será executado conforme o esperado, e então, inesperadamente, o case 3 também será executado:

<?php $num = 2; switch ($num) { case 1: echo 1; case 2: echo 2; case 3: echo 3; } // Após a execução, o código exibirá 2 e depois 3 ?>

Se atribuirmos o número 1 à variável $num, então todos os case serão executados:

<?php $num = 1; switch ($num) { case 1: echo 1; case 2: echo 2; case 3: echo 3; } // Após a execução, o código exibirá 1, depois 2 e depois 3 ?>

Ou seja, acontece que na ausência de break, após a execução do case planejado, todos os case abaixo dele também serão executados. Às vezes essa característica é utilizada na resolução de problemas.

No exemplo a seguir, se a variável $num tiver o valor 1 ou 2, então o valor 'a' será atribuído à variável $res. Se a variável $num tiver o valor 3, então o valor 'b' será atribuído à variável $res:

<?php $num = 1; switch ($num) { case 1: case 2: $res = 'a'; break; case 3: $res = 'b'; break; } echo $res; ?>

Como mencionado anteriormente, às vezes essa característica é utilizada, mas eu, de modo geral, não recomendo usá-la, pois o código se torna pouco óbvio.

É mais claro resolver esse tipo de problema usando ifs:

<?php $num = 1; if ($num == 1 or $num == 2) { $res = 'a'; } if ($num == 3) { $res = 'b'; } echo $res; ?>
plhyenuzcuz