PHP да break-нинг ихтиёрийлиги
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 бажарилгандан сўнг,
ундан pastdagi барча case-лар ҳам бажарилади.
Бaъзан бундай хусусиятдан масалаларни ечishda фойдаланилади.
️ Кейинги мисолда, агар $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;
?>
️ Юқорида мен айтганман, бaъзан бундай хусусиятдан фойдаланилади, лекин мен, умуман олганда, уни ишлатишни tavsiya qilmayman, чунки код жуда аник ️ бўлиб қолмайди.
️ Бундай масалани if-лар орқали ечиш аникрокдир:
<?php
$num = 1;
if ($num == 1 or $num == 2) {
$res = 'a';
}
if ($num == 3) {
$res = 'b';
}
echo $res;
?>