Другие ответы дают хорошие примеры, просто для ясности ...
Случай (включая значение по умолчанию) не прекращается при его завершении, если вы не включите разрыв. Хотя переключатель часто сравнивают с последовательностью if elseif elseif и т. Д., Однако это не совсем так.
Короткая версия: SWITCH / CASE действует только как IF / ELSEIF / ELSE , если , вы включаете разрывы после каждого случая. SWITCH / CASE больше похож на серию операторов «if», в которых каждый из них имеет одинаковую проверку переменных с разными значениями, по которым он проверяется.
Длинная версия: Без учета перерыва каждый случай является «началом здесь», и различия во многих отношениях делают его ближе к GOTO без недостатков. Технически, если вы действительно ДЕЙСТВИТЕЛЬНО хотели (читай, были мазохистские кодеры, которые хотели по-настоящему бросить вызов себе), вы могли бы написать практически любые процедурные программы, используя только один внешний массив, цикл for и переключатель, вложенный внутрь.
Серьезно, почему вы хотели бы сделать это, уму непостижимо, но это действительно демонстрирует, насколько далеко переключатель / регистр может отклоняться от паттернов if / elseif, поэтому он здесь для вас по академическим причинам (но не делайте этого!) ...
$array = [];
$array['masterLoop'] = 1;
$for ($i = 0, $i < $array['masterLoop'], $i++ ){
switch($array['goto']){
default:
case 1:
PRINT: "Welcome to the program";
case 2:
PRINT: "Please make a choice:";
case 3:
$array['choice']='';
// Wait for some input variable and set choice to it.
case 4:
$array['goto']=$array['choice'];
$array['masterLoop']++;
}
}
То, как этот код будет выполняться (после того, как вы настроили что-то для захвата и установки выбора), будет запускаться с
"Welcome to the program. Please make a choice."
<<user inputs 2>>
"Please make a choice."
<<user inputs 1>>
"Welcome to the program. Please make a choice."
<<user inputs 3>>
// program awaits user input
<<user inputs 4>>
// user triggers infinite loop
Итак ... вы можете использовать переключатели, чтобы вспомнить времена BASIC ...
но если вы это сделаете, и я должен отладить ваш код позже, после того, как вы все это написали ...
Пусть Линус Торвальдс помилует вашу душу.