PHP-də break-in məcburi olmaması
break əmri məcburi deyil.
Lakin on olmadan, case bloklarının
davranışı gözlənilməz olacaq. Gəlin bir nümunəyə baxaq.
Tutaq ki, bizdə belə bir kod var:
<?php
$num = 1;
switch ($num) {
case 1:
echo 1;
break;
case 2:
echo 2;
break;
case 3:
echo 3;
break;
}
?>
Gəlin ondan bütün break-ləri çıxaraq, və dəyişənə
$num əvvəlcə 3 rəqəmini yazaq.
Hələlik hər şey əvvəlki kimi işləyəcək:
<?php
$num = 3; // burada rəqəm 3 olsun
switch ($num) {
case 1:
echo 1;
case 2:
echo 2;
case 3:
echo 3;
}
// İşə salındıqdan sonra kod 3 çıxardacaq - hər şey yaxşıdır
?>
Gəlin indi $num dəyişəninə
2 rəqəmini yazaq. Bu halda gözlənildiyi kimi
case 2 icra olunacaq, sonra isə gözlənilmədən
case 3 də icra olunacaq:
<?php
$num = 2;
switch ($num) {
case 1:
echo 1;
case 2:
echo 2;
case 3:
echo 3;
}
// İşə salındıqdan sonra kod əvvəl 2, sonra isə 3 çıxardacaq
?>
Əgər $num dəyişəninə
1 rəqəmi yazılsa, onda ümumiyyətlə bütün
case quruluşları icra olunacaq:
<?php
$num = 1;
switch ($num) {
case 1:
echo 1;
case 2:
echo 2;
case 3:
echo 3;
}
// İşə salındıqdan sonra kod əvvəl 1, sonra 2, daha sonra isə 3 çıxardacaq
?>
Yəni belə çıxır ki, break olmadıqda
nəzərdə tutulan case icra olunduqdan sonra,
onun altındakı bütün case-lər də icra olunur. Bəzən
bu xüsusiyyətdən məsələləri həll edərkən istifadə edirlər.
Aşağıdakı nümunədə, əgər $num dəyişəni
1 və ya 2 dəyərinə malikdirsə,
$res dəyişəninə 'a' yazılacaq.
Əgər $num dəyişəni 3 dəyərinə
malikdirsə, onda $res dəyişəninə
'b' yazılacaq:
<?php
$num = 1;
switch ($num) {
case 1:
case 2:
$res = 'a';
break;
case 3:
$res = 'b';
break;
}
echo $res;
?>
Yuxarıda qeyd etdim ki, bəzən bu xüsusiyyətdən istifadə olunur, amma ümumiyyətlə, mən ondan istifadə etməyi tövsiyə etmirəm, çünki kod çox aydın olmur.
Belə bir məsələni if-lər vasitəsilə həll etmək daha aydındır:
<?php
$num = 1;
if ($num == 1 or $num == 2) {
$res = 'a';
}
if ($num == 3) {
$res = 'b';
}
echo $res;
?>