⊗ppPmCdBNM 100 of 447 menu

L'opzionalità di break in PHP

Il comando break è opzionale. Tuttavia, senza di esso, il comportamento dei blocchi case sarà inaspettato. Diamo un'occhiata a un esempio. Supponiamo di avere il seguente codice:

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

Rimuoviamo tutti i break e, per cominciare, inseriamo il numero 3 nella variabile $num.

Inizialmente, tutto funzionerà come prima:

<?php $num = 3; // supponiamo che qui ci sia il numero 3 switch ($num) { case 1: echo 1; case 2: echo 2; case 3: echo 3; } // Dopo l'esecuzione, il codice mostrerà 3 - tutto bene ?>

Ora inseriamo il numero 2 nella variabile $num. In questo caso, verrà eseguito case 2 come previsto, e poi, inaspettatamente, anche case 3:

<?php $num = 2; switch ($num) { case 1: echo 1; case 2: echo 2; case 3: echo 3; } // Dopo l'esecuzione, il codice mostrerà 2, e poi 3 ?>

Se invece inseriamo il numero 1 nella variabile $num, verranno eseguite tutte le strutture case:

<?php $num = 1; switch ($num) { case 1: echo 1; case 2: echo 2; case 3: echo 3; } // Dopo l'esecuzione, il codice mostrerà 1, poi 2 e poi 3 ?>

Quindi, in assenza di break, dopo l'esecuzione del case previsto, verranno eseguiti anche tutti i case successivi. A volte questa caratteristica viene utilizzata per risolvere problemi.

Nel seguente esempio, se la variabile $num ha valore 1 o 2, nella variabile $res verrà scritto 'a'. Se invece la variabile $num ha valore 3, nella variabile $res verrà scritto 'b':

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

In precedenza ho scritto che a volte questa caratteristica viene utilizzata, ma in generale, non raccomando di usarla, poiché il codice diventa poco chiaro.

È più ovvio risolvere un problema del genere con gli if:

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