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