PHP foreach continuar

Estou a tentar saltar para a próxima iteração do laço, se certas condições não forem cumpridas. O problema é que o laço continua independentemente.

Onde é que eu errei?

actualização da amostra de código em resposta ao primeiro comentário.

    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
Author: cdhowie, 2010-11-24

4 answers

Se está a tentar que o seu segundo continue se aplique ao laço foreach, terá de o mudar de

continue;

A

continue 2;

Isto irá instruir o PHP para aplicar a instrução continue ao segundo laço aninhado, que é o laço foreach. Caso contrário, aplicar-se-á apenas ao laço for.

 92
Author: cdhowie, 2010-11-24 18:12:36

O segundo continua está noutro ciclo. Este só vai "reiniciar" o laço interior. Se quiser reiniciar o ciclo exterior, tem de dar continuar uma dica da quantidade de ciclos que deve subir

continue 2;

Ver Manual

 14
Author: KingCrunch, 2010-11-24 18:12:48

Você está chamando continue em um loop {[[2]}, então continue será feito para o loop for, não para o loop foreach. Uso:

continue 2;
 10
Author: netcoder, 2010-11-24 18:13:03

O continue dentro do laço for irá saltar dentro do laço for, não o laço foreach.

 0
Author: BeemerGuy, 2010-11-24 18:13:01