PHPda break ixtiyoriy
break komandasi majburiy emas. Biroq, agar u ishlatilmasa, case bloklarining ishlashi kutilmagan natijalarga olib kelishi mumkin. Keling, misolda ko‘rib chiqamiz. Quyidagi kod mavjud bo‘lsin:
<?php
$num = 1;
switch ($num) {
case 1:
echo 1;
break;
case 2:
echo 2;
break;
case 3:
echo 3;
break;
}
?>
Undagi barcha breaklarni olib tashlaymiz va dastlab $num o‘zgaruvchisiga 3 sonini yozamiz.
Hozircha hammasi avvalgidek ishlaydi:
<?php
$num = 3; // bu erda 3 raqami bo'lsin
switch ($num) {
case 1:
echo 1;
case 2:
echo 2;
case 3:
echo 3;
}
// Ishga tushgandan so'ng, kod 3 ni chiqaradi-hammasi yaxshi
?>
Keling, endi $num o‘zgaruvchisiga 2 sonini yozamiz.
Bu holatda kutilganidek case 2 bajariladi, lekin kutilmaganda case 3 ham ishlaydi:
<?php
$num = 2;
switch ($num) {
case 1:
echo 1;
case 2:
echo 2;
case 3:
echo 3;
}
// Ishga tushgandan so'ng, kod 2 va keyin 3 ni chiqaradi
?>
Agar $num o‘zgaruvchisiga 1 sonini yozsak, u holda barcha case bloklari bajariladi (agar mos kelsa):
<?php
$num = 1;
switch ($num) {
case 1:
echo 1;
case 2:
echo 2;
case 3:
echo 3;
}
// Ishga tushgandan so'ng, kod 1, keyin 2 va keyin 3 ni chiqaradi
?>
Ya’ni, agar break bo‘lmasa, tanlangan case bajarilgandan so‘ng, pastdagi barcha case bloklari ham bajariladi. Ba’zan bu xususiyat muayyan masalalarni yechishda foydali bo‘lishi mumkin.
Agar $num o'zgaruvchisi 1 yoki 2 ga teng bo'lsa, $res o'zgaruvchisi 'a' qiymatini oladi. Agar $num 3 ga teng bo'lsa, $res o'zgaruvchisi 'b' qiymatini oladi:
<?php
$num = 1;
switch ($num) {
case 1:
case 2:
$res = 'a';
break;
case 3:
$res = 'b';
break;
}
echo $res;
?>
Yuqorida men yozganimdek, ba'zan bunday xususiyatdan foydalanishadi, ammo aslida men uni ishlatishni tavsiya qilmayman, chunki kod unchalik aniq bo'lmaydi.
Bunday vazifani if operatorlari yordamida hal qilish aniqroq bo'ladi:
<?php
$num = 1;
if ($num == 1 or $num == 2) {
$res = 'a';
}
if ($num == 3) {
$res = 'b';
}
echo $res;
?>