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 орындалғаннан кейін,
оның астындағы барлық 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;
?>