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

4 ответов


если вы пытаетесь иметь свой второй continue применить к foreach loop, вам придется изменить его с

continue;

to

continue 2;

это проинструктирует PHP применить continue оператор второго вложенного цикла, который является foreach петли. В противном случае он будет применяться только к for петли.


второй дальше - это в другом цикле. Это будет только "перезапустить" внутренний цикл. Если вы хотите перезапустить внешний цикл, вам нужно дать дальше подсказка, сколько петель он должен идти вверх

continue 2;

посмотреть руководство


вы призываете continue на for цикл, поэтому продолжить будет сделано для for петли, а не foreach один. Использовать:

continue 2;

на continue внутри for цикл пропустит в пределах for петли, а не foreach петли.