PHP-da break-iň hökman däl bolmagy

break buýrugy hökman däl. Emma onuň ýoglugynda, case bloglarynyň ýörgünlini gözlänilmedik bolar. Mysal üçin sereliň. Bizde şeýle kod bolsun:

php<?php
  $num = 1;
  
  switch ($num) {
    case 1:
      echo 1;
    break;
    case 2:
      echo 2;
    break;
    case 3:
      echo 3;
    break;
  }
?>

Ondan ähli break-leri aýyryň we üýtgeýjide $num başlangyçda 3 sanyny ýazalyň.

Ilki bilen hemme zat öňki ýaly işleýär:

php<?php
  $num = 3; // bu ýerde san 3 diýeliň
  
  switch ($num) {
    case 1:
      echo 1;
    case 2:
      echo 2;
    case 3:
      echo 3;
  }
  
  // Işledensoň, kod 3-ü görkezer - hemme gowy
?>

Indi $num üýtgeýjisine 2 sanyny ýazalyň. Bu ýagdaýda, gözlenilşi ýaly case 2 ýerine ýetiriler, soňra bolsa gözlänilmedik ýaly case 3 hem ýerine ýetiriler:

php<?php
  $num = 2;
  
  switch ($num) {
    case 1:
      echo 1;
    case 2:
      echo 2;
    case 3:
      echo 3;
  }
  
  // Işledensoň, kod 2, soňra 3 görkezer
?>

$num üýtgeýjisine 1 sanyny ýazsaňyz, umuman ähli case gurluşlary ýerine ýetiriler:

php<?php
  $num = 1;
  
  switch ($num) {
    case 1:
      echo 1;
    case 2:
      echo 2;
    case 3:
      echo 3;
  }
  
  // Işledensoň, kod 1, soňra 2, soňra 3 görkezer
?>

Ýagny, break ýok bolsa, meýilleşdirilen case ýerine ýetirilensoň, onuň aşakdaky ähli case-ler hem ýerine ýetiriler. Käte meseleleri çözmekde bu aýratynlyk ulanylýar.

Indiki mysalda, $num üýtgeýjisiniň bahasy 1 ýa-da 2 bolsa, onda $res üýtgeýjisine 'a' ýazylar. $num üýtgeýjisiniň bahasy 3 bolsa, onda $res üýtgeýjisine 'b' ýazylar:

php<?php
  $num = 1;
  
  switch ($num) {
    case 1:
    case 2:
      $res = 'a';
    break;
    case 3:
      $res = 'b';
    break;
  }
  
  echo $res;
?>

Ýokarda, käte bu aýratynlygyň ulanylandygyny ýazdym, ýöne, umumy alnyňda, men ony ulanylmagy maslahat bermeýärin, sebäbi kod aýdyň bolmaýar.

Beýle bir meseläni if-ler bilen çözmek has aýdyňrak:

php<?php
  $num = 1;
  
  if ($num == 1 or $num == 2) {
    $res = 'a';
  }
  
  if ($num == 3) {
    $res = 'b';
  }
  
  echo $res;
?>