PHP-da break ning ixtiyoriyligi

break buyrug'i ixtiyoriy hisoblanadi. Biroq, undan foydalanmaslik, case bloklarining harakatini kutilmagan holga keltiradi. Keling, buni misolda ko'ramiz. Faraz qilaylik, bizda quyidagi kod mavjud:

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

Keling, undan barcha break larni olib tashlaylik, va o'zgaruvchiga $num boshlash uchun 3 sonini yozamiz.

Dastlab hamma narsa ilgari ishlagandek ishlaydi:

php<?php
  $num = 3; // bu yerda 3 soni bo'lsin
  
  switch ($num) {
    case 1:
      echo 1;
    case 2:
      echo 2;
    case 3:
      echo 3;
  }
  
  // Ishga tushgandan so'ng, kod 3 ni chiqaradi - hammasi yaxshi
?>

Keling endi $num o'zgaruvchisiga 2 sonini yozamiz. Bu holda kutganimizdek case 2 bajariladi, va keyin kutilmaganda case 3 ham bajariladi:

php<?php
  $num = 2;
  
  switch ($num) {
    case 1:
      echo 1;
    case 2:
      echo 2;
    case 3:
      echo 3;
  }
  
  // Ishga tushgandan so'ng, kod avval 2 ni, keyin 3 ni chiqaradi
?>

Agar $num o'zgaruvchisiga 1 soni yozilsa, unda barcha case konstruksiyalari bajariladi:

php<?php
  $num = 1;
  
  switch ($num) {
    case 1:
      echo 1;
    case 2:
      echo 2;
    case 3:
      echo 3;
  }
  
  // Ishga tushgandan so'ng, kod avval 1 ni, keyin 2 ni, keyin 3 ni chiqaradi
?>

Ya'ni, break bo'lmasa, mo'ljallangan case bajarilgandan so'ng, undan keyingi barcha case lar ham bajariladi. Ba'zan bu xususiyatdan masalalarni yechishda foydalaniladi.

Quyidagi misolda, agar $num o'zgaruvchisi 1 yoki 2 qiymatiga ega bo'lsa, $res o'zgaruvchisiga 'a' yoziladi. Agar $num o'zgaruvchisi 3 qiymatiga ega bo'lsa, $res o'zgaruvchisiga 'b' yoziladi:

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

Yuqorida men, ba'zan bu xususiyatdan foydalanilishini yozdim, lekin men, umuman olganda, undan foydalanishni tavsiya qilmayman, chunki kod aniq bo'lib qolmaydi.

Bunday masalani if lar orqali yechish aniqroq bo'ladi:

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