Я знаю, что это серьезный некро, но ... когда я приехал сюда из Google, я решил избавить других от путаницы.
Если бы он хотел выйти из коммутатора и просто закончить цикл числа,тогда break 2;
было бы хорошо.continue 2;
просто продолжил бы цикл числа и продолжал бы итерацию по нему, чтобы каждый раз быть continue
'.
Ergo, правильный ответ должен быть continue 3;
.
Идетна комментарий в документах continue в основном идет до конца структуры, для switch это так (будет похоже на break), для циклов, которые он подхватит на следующей итерации.
См .: http://codepad.viper -7.com / dGPpeZ
Пример для случая выше n / a:
<?php
echo "Hello, World!<pre>";
$numbers= array(1,2,3,4,5,6,7,8,9,0);
$letters = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i');
$i = 0;
foreach($letters as $letter) {
++$i;
echo $letter . PHP_EOL;
foreach($numbers as $number) {
++$i;
switch($letter) {
case 'd':
// So here I want to 'break;' out of the switch, 'break;' out of the
// $numbers loop, and then 'continue;' in the $letters loop.
continue 3; // go to the end of this switch, numbers loop iteration, letters loop iteration
break;
case 'f':
continue 2; // skip to the end of the switch control AND the current iteration of the number's loop, but still process the letter's loop
break;
case 'h':
// would be more appropriate to break the number's loop
break 2;
}
// Still in the number's loop
echo " $number ";
}
// Stuff that should be done if the 'letter' is not 'd'.
echo " $i " . PHP_EOL;
}
Результаты:
Hello, World!
a
1 2 3 4 5 6 7 8 9 0 11
b
1 2 3 4 5 6 7 8 9 0 22
c
1 2 3 4 5 6 7 8 9 0 33
d
e
1 2 3 4 5 6 7 8 9 0 46
f
57
g
1 2 3 4 5 6 7 8 9 0 68
h
70
i
1 2 3 4 5 6 7 8 9 0 81
continue 2;
не только обрабатывает буквенный цикл для буквы d, но даже обрабатывает остальную часть числового цикла (обратите внимание, что $i
увеличивается и печатается после f).(Что может быть, а может и не быть желательным ...)
Надеюсь, что это поможет кому-то еще, кто окажется здесь первым.