php foreach продолжить - PullRequest
       15

php foreach продолжить

44 голосов
/ 24 ноября 2010

Я пытаюсь перейти к следующей итерации цикла, если определенные условия не выполняются. Проблема в том, что цикл продолжается независимо.

Где я ошибся?

Обновленный пример кода в ответ на первый комментарий.

    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 ]

101 голосов
/ 24 ноября 2010

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

continue;

до

continue 2;

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

18 голосов
/ 24 ноября 2010

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

continue 2;

См. Manual

10 голосов
/ 24 ноября 2010

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

continue 2;
0 голосов
/ 24 ноября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...