⊗ppPmCdBNM 100 of 447 menu

Незадължителност на 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; ?>
Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне