PHPдеги breakтин милдеттүү эместиги
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;
?>