Ихтиёрии 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;
?>