Opsionaliteti i break në PHP

Komanda break është opsionale. Pa të, megjithatë, sjellja e blloqeve case do të jetë e papritur. Le të shohim me një shembull. Le të themi se kemi këtë kod:

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

Le të heqim të gjitha break, dhe në variablin $num për fillim le të vendosim numrin 3.

Për momentin gjithçka do të funksionojë ashtu siç funksiononte:

php<?php
  $num = 3; // le të themi se këtu është numri 3
  
  switch ($num) {
    case 1:
      echo 1;
    case 2:
      echo 2;
    case 3:
      echo 3;
  }
  
  // Pas nisjes kodi do të shfaqë 3 - gjithçka në rregull
?>

Tani le të vendosim në variablin $num numrin 2. Në këtë rast, pritej të ekzekutohet case 2, dhe pastaj papritur edhe case 3:

php<?php
  $num = 2;
  
  switch ($num) {
    case 1:
      echo 1;
    case 2:
      echo 2;
    case 3:
      echo 3;
  }
  
  // Pas nisjes kodi do të shfaqë 2, dhe pastaj 3
?>

Nëse vendosim në variablin $num numrin 1, atëherë në përgjithësi do të ekzekutohen të gjitha konstruksionet case:

php<?php
  $num = 1;
  
  switch ($num) {
    case 1:
      echo 1;
    case 2:
      echo 2;
    case 3:
      echo 3;
  }
  
  // Pas nisjes kodi do të shfaqë 1, pastaj 2, dhe pastaj 3
?>

Kjo do të thotë që, në mungesë të break, pas ekzekutimit të case të planifikuar, do të ekzekutohen edhe të gjitha case poshtë tij. Ndonjëherë këtë veçori e përdorin, kur zgjidhin probleme.

Në shembullin vijues, nëse variabla $num ka vlerën 1 ose 2, atëherë në variablin $res do të shkruhet 'a'. Nëse variabla $num ka vlerën 3, atëherë në variablin $res do të shkruhet 'b':

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

Më lart thashë që ndonjëherë këtë veçori e përdorin, por unë, në përgjithësi, nuk e rekomandoj ta përdorni, sepse kodi bëhet jo shumë i qartë.

Është më e qartë të zgjidhet një problem i tillë me if:

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