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;
?>