[Resolvido] Case - php - Programação web - Clube do Hardware
[Resolvido] Case - php
Por DanyelNak, 3 de abril de 2012 em Programação web
quando eu faco mais que um CASE eu tenho que fechar todos?
só preciso dar um break, ou tenho que dar os dois break?
você precisa seguir a estrutura certa do switch case.
testaCase.php
$opcao $_POST["radio"]
switch($opcao){
case "a": echo "escolheu a opção A";
case "b": echo "escolheu a opção B";
case "c": echo "escolheu a opção C":
default: echo "nenhuma das alternativas foram escolhidas";
<form action="testaCase.php" method="post">
<li><input type="radio" name="radio" value="a">A</li>
<li><input type="radio" name="radio" value="b">B</li>
<li><input type="radio" name="radio" value="c">C</li>
<li><input type="radio" name="radio" value="d">D</li>
<input type="submit" value="testar Switch case"/>
Nao levei em conta a estilizaçao com css nesse formulario.
O break não é necessariamente obrigatório.. e sim, você pode deixar linhas em branco conforme seu exemplo acima. Não precisa colocar break em todos..
A existência do break está relacionada a forma que o switch case trata a condição.. pois ele só trata a condição uma vez e então ele executará todos os códigos a partir do momento em que um case passar na condição.. mas não executará a condição novamente (ignorando os outros cases). Por isso é utilizado o break..
Isso pode ser lido na própria documentação do PHP:
http://php.net/manual/en/control-structures.switch.php (inglês)
DanyelNak
Ok, muito obrigado pelas respostas,
Então eu só peguei a parte dos case, porque é o que eu precisava para dar o exemplo,
então eu posso usar do jeito que usei para fechar os meus Cases? usando apenas um break?
bem.. segundo o post do lucas.. sim .. mas pelo que eu aprendi na faculdade.. a clausula break serve para parar a execuçao... então se você tem varios cases e neles so pode haver uma execuçao em especifico.. o break seriviria para isso.
a impressao que tenho é que enquanto você nao declara um break.. ele vai executando o case "a".. o case "b".. e aí por diante ate encontrar um break e parar.
no caso do seu exemplo e pelo site que lucas postou.. serviria caso você queria que eles façam o mesmo codigo antes de parar
o case é equivalente ao bloco de if - else , else if.. por exemplo:
if (variavel == "a" ){
faz alguma coisa
}else if(variavel == "b"){
faz outra cois diferente
traduzindo isso.. pra ifs no seu exemplo o que me dá impressao é que seria isso:
if((variavel == "a") && (variavel == "b")){
posso ta totalmente errado.. mas é essa a impressao que me dá. da uma olhada no link que o lucas postou.. é do proprio manual..
Sim.. a ideia é essa mesmo: Após algum case passar na condição, todos os códigos (dos outros cases - mesmo que não passem a condição) serão executados.. isso porque a condição só é verificada uma vez.
Então se você não quiser executar todos os códigos é necessário parar o case com um break sim. E sim, você pode (e deve - na maioria dos casos) fechar seu case com break!