Чем отличается
switch (variable) {
case 'value':
# code...
break;
case 'value':
# code...
break;
}
и этот
switch (variable) {
case 'value':
# code...
continue;
case 'value':
# code...
continue;
}
Это действительно другой результат или просто такой же?
Вот простой пример кода с обоими случаями переключения, упомянутыми выше
<?php
$variable = 20;
echo "Normal<br/>";
switch ($variable) {
case '20':
echo "twenty";
break;
case '21':
echo "twenty one";
break;
}
echo "<br/><br/>With Continue<br/>";
switch ($variable) {
case '20':
echo "twenty";
continue;
case '21':
echo "twenty one";
continue;
}
?>
Когда я выполняю приведенный выше код, я получаю следующий вывод
Normal
twenty
With Continue
twenty
Как?
Рабочая перерыв заявления
Перерыв заявление заставляет выполнение кода выходить из блока и выполнять следующие операторы, из-за чего оператор switch будет выполнять только один оператор case и выходить из блока switch без выполнения других блоков case.
Рабочая Продолжить заявление
Продолжить заявление в случае циклов это приведет к тому, что цикл прекратит выполнение текущей итерации цикла и перейдет к следующей итерации цикла (если таковая существует), но в случае оператора switch он рассматривается как оператор цикла, но никаких последующих итераций, вызывающих оператор switch, не происходит.
У нас может быть оператор switch без операторов break, как этот
<?php
$variable = 20;
echo "Normal";
switch ($variable) {
case '19':
echo "<br/>Nineteen";
case '20':
echo "<br/>twenty";
case '21':
echo "<br/>twenty one";
case '23':
echo "<br/>twenty three";
}
?>
Вывод вышеуказанного кода будет
Normal
twenty
twenty one
twenty three
то есть выполнение всех операторов case после случая, когда найдено первое совпадение.
В PHP два вышеуказанных кода работают одинаково. Здесь break
а также continue
Заявление о предотвращении контроля собирается в следующем case
, Это continue
действует так же, как break
Вот. Также переключатель предназначен для выполнения только один раз. Это не петля. следовательно continue
здесь не актуально.
Примечание: если есть цикл, заключающий это switch
Заявление, то результат будет другим.
Это особый случай для PHP, потому что, как указано официальная документация:
Примечание. В PHP оператор switch считается циклической структурой.
для целей продолжения. продолжить ведет себя как перерыв (когда нет
аргументы пройдены). Если переключатель находится внутри петли, продолжить 2 будет
продолжить со следующей итерации внешнего цикла.
По сути, это означает, что между вашими двумя примерами нет никакой разницы. Однако для ясности я думаю, что было бы лучше использовать break
как это стандарт на других языках. Обратите внимание, что вы можете использовать continue 2
(или 3, 4 …) для перехода к следующей итерации цикла, если переключатель находится внутри цикла (или более).