PHP-da break ning ixtiyoriyligi
break buyrug'i ixtiyoriy hisoblanadi.
Biroq, undan foydalanmaslik, case bloklarining
harakatini kutilmagan holga keltiradi. Keling, buni misolda ko'ramiz.
Faraz qilaylik, bizda quyidagi kod mavjud:
<?php
$num = 1;
switch ($num) {
case 1:
echo 1;
break;
case 2:
echo 2;
break;
case 3:
echo 3;
break;
}
?>
Keling, undan barcha break larni olib tashlaylik, va o'zgaruvchiga
$num boshlash uchun 3 sonini yozamiz.
Dastlab hamma narsa ilgari ishlagandek ishlaydi:
<?php
$num = 3; // bu yerda 3 soni 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 holda kutganimizdek
case 2 bajariladi, va keyin kutilmaganda
case 3 ham bajariladi:
<?php
$num = 2;
switch ($num) {
case 1:
echo 1;
case 2:
echo 2;
case 3:
echo 3;
}
// Ishga tushgandan so'ng, kod avval 2 ni, keyin 3 ni chiqaradi
?>
Agar $num o'zgaruvchisiga
1 soni yozilsa, unda barcha
case konstruksiyalari bajariladi:
<?php
$num = 1;
switch ($num) {
case 1:
echo 1;
case 2:
echo 2;
case 3:
echo 3;
}
// Ishga tushgandan so'ng, kod avval 1 ni, keyin 2 ni, keyin 3 ni chiqaradi
?>
Ya'ni, break bo'lmasa,
mo'ljallangan case bajarilgandan so'ng,
undan keyingi barcha case lar ham bajariladi. Ba'zan
bu xususiyatdan masalalarni yechishda foydalaniladi.
Quyidagi misolda, agar $num o'zgaruvchisi
1 yoki 2 qiymatiga ega bo'lsa,
$res o'zgaruvchisiga 'a' yoziladi.
Agar $num o'zgaruvchisi 3
qiymatiga ega bo'lsa, $res o'zgaruvchisiga
'b' yoziladi:
<?php
$num = 1;
switch ($num) {
case 1:
case 2:
$res = 'a';
break;
case 3:
$res = 'b';
break;
}
echo $res;
?>
Yuqorida men, ba'zan bu xususiyatdan foydalanilishini yozdim, lekin men, umuman olganda, undan foydalanishni tavsiya qilmayman, chunki kod aniq bo'lib qolmaydi.
Bunday masalani if lar orqali yechish aniqroq bo'ladi:
<?php
$num = 1;
if ($num == 1 or $num == 2) {
$res = 'a';
}
if ($num == 3) {
$res = 'b';
}
echo $res;
?>