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<?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<?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<?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<?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<?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<?php
  $num = 1;
  
  if ($num == 1 or $num == 2) {
    $res = 'a';
  }
  
  if ($num == 3) {
    $res = 'b';
  }
  
  echo $res;
?>