⊗ppPmCdBNM 100 of 447 menu

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