break-ის არჩევითობა PHP-ში
ბრძანება break არის არჩევითი.
მის გარეშე, თუმცა, case ბლოკების
ქცევა მოულოდნელი იქნება. მოდით შევხედოთ მაგალითს.
დავუშვათ, გვაქვს ასეთი კოდი:
<?php
$num = 1;
switch ($num) {
case 1:
echo 1;
break;
case 2:
echo 2;
break;
case 3:
echo 3;
break;
}
?>
ამოვიღოთ მისგან ყველა break, ხოლო ცვლადში
$num დასაწყისისთვის ჩავწეროთ რიცხვი 3.
ჯერჯერობთ ყველაფერი იმუშავებს ისე, როგორც მუშაობდა:
<?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
$num = 2;
switch ($num) {
case 1:
echo 1;
case 2:
echo 2;
case 3:
echo 3;
}
// გაშვების შემდეგ კოდი გამოიტანს 2-ს, შემდეგ კი 3-ს
?>
თუ კი ცვლადში $num ჩაიწერება
რიცხვი 1, მაშინ საერთოდ შესრულდება ყველა
კონსტრუქცია case:
<?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
$num = 1;
switch ($num) {
case 1:
case 2:
$res = 'a';
break;
case 3:
$res = 'b';
break;
}
echo $res;
?>
ზემოთ დავწერე, რომ ზოგჯერ ასეთი თავისებურება გამოიყენება, მაგრამ მე, საერთოდ რომ ვთქვათ, არ გირჩევთ მის გამოყენებას, რადგან კოდი ხდება არა ძალიან აშკარა.
ასეთი ამოცანის ამოხსნა უფრო აშკარაა if-ების მეშვეობით:
<?php
$num = 1;
if ($num == 1 or $num == 2) {
$res = 'a';
}
if ($num == 3) {
$res = 'b';
}
echo $res;
?>