Опционалност break-а у PHP
Наредба break је опционална.
Међутим, без ње, понашање case блокова
биће неочекивано. Хајде да погледамо на примеру.
Претпоставимо да имамо следећи код:
<?php
$num = 1;
switch ($num) {
case 1:
echo 1;
break;
case 2:
echo 2;
break;
case 3:
echo 3;
break;
}
?>
Уклонимо из њега све break наредбе, а у променљиву
$num за почетак упишимо број 3.
За сада ће све радити онако како је и радило:
<?php
$num = 3; // нека овде буде број 3
switch ($num) {
case 1:
echo 1;
case 2:
echo 2;
case 3:
echo 3;
}
// Након покретања код ће исписати 3 - све је у реду
?>
Хајде сада да у променљиву $num упишемо
број 2. У овом случају ће се, очекивано,
извршити case 2, а затим неочекивано
и case 3:
<?php
$num = 2;
switch ($num) {
case 1:
echo 1;
case 2:
echo 2;
case 3:
echo 3;
}
// Након покретања код ће исписати 2, а затим 3
?>
Ако у променљиву $num упишемо
број 1, извршиће се све
case конструкције:
<?php
$num = 1;
switch ($num) {
case 1:
echo 1;
case 2:
echo 2;
case 3:
echo 3;
}
// Након покретања код ће исписати 1, затим 2, а затим 3
?>
То значи да се, при одсуству break,
након извршења жељеног case,
изврше и сви case испод њега. Понекад
се ова особина користи при решавању задатака.
У следећем примеру, ако променљива $num
има вредност 1 или 2, онда
ће се у променљиву $res уписати 'a'.
Ако променљива $num има вредност
3, онда ће се у променљиву $res
уписати 'b':
<?php
$num = 1;
switch ($num) {
case 1:
case 2:
$res = 'a';
break;
case 3:
$res = 'b';
break;
}
echo $res;
?>
Горе сам написао да се понекад ова особина користи, али генерално не препоручујем да се користи, јер код постаје мање разумиљив.
Разумљивије је решити такав задатак помоћу if наредби:
<?php
$num = 1;
if ($num == 1 or $num == 2) {
$res = 'a';
}
if ($num == 3) {
$res = 'b';
}
echo $res;
?>