Php foreach продолжить
Я пытаюсь перейти к следующей итерации цикла, если некоторые условия не выполняются. Проблема в том, что цикл продолжается независимо.
Где я ошибся?
Обновлен образец кода в ответ на первый комментарий.
foreach ($this->routes as $route => $path) {
$continue = 0;
...
// Continue if route and segment count do not match.
if (count($route_segments) != $count) {
$continue = 12;
continue;
}
// Continue if no segment match is found.
for($i=0; $i < $count; $i++) {
if ($route_segments[$i] != $segments[$i] && ! preg_match('/^\x24[0-9]+$/', $route_segments[$i])) {
$continue = 34;
continue;
}
}
echo $continue; die(); // Prints out 34
Ответы
Ответ 1
Если вы пытаетесь применить второй continue
к циклу foreach
, вам придется изменить его из
continue;
к
continue 2;
Это даст указание PHP применить оператор continue
ко второму вложенному циклу, который представляет собой цикл foreach
. В противном случае он будет применяться только к циклу for
.
Ответ 2
Второе продолжение находится в другом цикле. Этот будет только "перезапускать" внутренний цикл. Если вы хотите перезапустить внешний цикл, вам нужно дать подсказку о том, сколько циклов должно идти вверх
continue 2;
См. Руководство
Ответ 3
Вы вызываете continue
в цикле for
, поэтому для цикла for
будет выполняться продолжение, а не foreach
. Использование:
continue 2;
Ответ 4
continue
в цикле for
пропустит цикл for
, а не цикл foreach
.