Подтвердить что ты не робот

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
4b9b3361

Ответ 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.