PHPдеги breakтин милдеттүү эместиги

break командасы милдеттүү эмес. Бирок, ансыз case блокторунун жүрүм-туруму күтүлбөгөн болот. Келгиле, мисал менен карап чыгалы. Бизде төмөнкүдөй код бар деп коёлу:

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

Андан бардык break-терди алайын, ал эми $num өзгөрмөсүнө башында 3 санын жазайын.

Баары мурункудай эле иштей берет:

php<?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<?php
  $num = 2;
  
  switch ($num) {
    case 1:
      echo 1;
    case 2:
      echo 2;
    case 3:
      echo 3;
  }
  
  // Иштеткенден кийин код 2, андан кийин 3 чыгарат
?>

Эгерде $num өзгөрмөсүнө 1 санын жазсак, анда бардык case курулмалары аткарылып калат:

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

Жогоруда мен, кээде бул өзгөчөлүк колдонулат деп жаздым, бирок мен, жалпысынан, аны колдонууну сунуш кылбайм, анткени код өтө түшүнүктүү болуп калбайт.

Мындай маселени if-тер аркылуу чечүү түшүнүктүүрөөк:

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