Защитный корпус переключателя с переполнением стека петли

Пожалуйста помоги.

for($i=0; $i<12; $i++ ){
switch($i) {
case 0:
case 1:
case 2:
case 3:
case 4:
echo ("i is less than 5 <br>");
break;
case 5:
case 6:
case 7:
case 8:
case 9:
echo ("i is less than 10 <br>");
break;
default:
echo ("i is 10 or more <br>");
}
}

Это пример кода, который я получил в своей книге по Java и перевел вышеприведенный код на PHP.

Вывод следующего кода:

i is less than 5
i is less than 5
i is less than 5
i is less than 5
i is less than 5
i is less than 10
i is less than 10
i is less than 10
i is less than 10
i is less than 10
i is 10 or more
i is 10 or more

Мой вопрос заключается в том, почему из случая 0 в случай 3 выводится «i меньше 5», даже если в нем нет следующего кода, а в случае 4 используется оператор echo? Я в замешательстве, может кто-нибудь объяснить это мне. Заранее спасибо.

-2

Решение

Вот так switch должен работать. Чтобы перестать переходить к следующему случаю, вы должны использовать break ключевое слово. Это одинаково на всех языках, которые я знаю, включая JavaScript, PHP и Python.

Для справки, проверьте Руководство по PHP.

1

Другие решения

Просто представьте, что ваш переключатель так

switch($i) {
case 0:
case 1:
case 2:
case 3:
case 4:
echo ("i is less than 5 <br>");
break;
case 5:
case 6:
case 7:
case 8:
case 9:
echo ("i is less than 10 <br>");
break;
default:
echo ("i is 10 or more <br>");

Он будет продолжать нести по цепи, пока не будет вызван разрыв.

1

По вопросам рекламы [email protected]