⊗ppPmCdBNM 100 of 447 menu

Opționalitatea break în PHP

Instrucțiunea break este opțională. Fără ea, însă, comportamentul blocurilor case va fi neașteptat. Să ne uităm la un exemplu. Să presupunem că avem următorul cod:

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

Să eliminăm toate instrucțiunile break, iar în variabila $num pentru început să atribuim numărul 3.

Pentru moment, totul va funcționa așa cum a funcționat:

<?php $num = 3; // să presupunem că aici este numărul 3 switch ($num) { case 1: echo 1; case 2: echo 2; case 3: echo 3; } // După execuție, codul va afișa 3 - totul este în regulă ?>

Să atribuim acum variabilei $num numărul 2. În acest caz, se va executa așteptat case 2, apoi, în mod neașteptat, și case 3:

<?php $num = 2; switch ($num) { case 1: echo 1; case 2: echo 2; case 3: echo 3; } // După execuție, codul va afișa 2, apoi 3 ?>

Dacă variabilei $num i se atribuie numărul 1, atunci se vor executa toate constructiile case:

<?php $num = 1; switch ($num) { case 1: echo 1; case 2: echo 2; case 3: echo 3; } // După execuție, codul va afișa 1, apoi 2, apoi 3 ?>

Adică, se dovedește că, în absența break, după executarea case-ului intenționat, se vor executa și toate case-urile de sub el. Uneori această particularitate este folosită în rezolvarea problemelor.

În următorul exemplu, dacă variabila $num are valoarea 1 sau 2, atunci în variabila $res se va scrie 'a'. Dacă variabila $num are valoarea 3, atunci în variabila $res se va scrie 'b':

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

Mai sus am spus că uneori această particularitate este folosită, dar, în general, nu recomand să o folosiți, deoarece codul devine mai puțin evident.

Este mai evident să rezolvi o astfel de problemă cu instrucțiuni if:

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