⊗ppPmCdBNM 100 of 447 menu

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; ?>
iduzcenkams