while terminar salir infinito for end ciclo cancel php loops

salir - terminar ciclo for php



¿Puedes ''salir'' de un bucle en PHP? (7)

Tengo un bucle que está haciendo una comprobación de errores en mi código PHP. Originalmente se veía algo como esto ...

foreach($results as $result) { if (!$condition) { $halt = true; ErrorHandler::addErrorToStack(''Unexpected result.''); } doSomething(); } if (!$halt) { // do what I want cos I know there was no error }

Esto funciona todo muy bien, pero sigue funcionando, a pesar de que después de un error no es necesario. ¿Hay alguna manera de escapar del circuito?


Como se indica en otras publicaciones, puede usar la palabra clave break. Una cosa que se insinuó pero no se explicó es que la palabra clave puede tomar un valor numérico para decirle a PHP de cuántos niveles se debe partir.

Por ejemplo, si tiene tres bucles foreach anidados tratando de encontrar una información, podría hacer ''break 3'' para salir de los tres bucles anidados. Esto funcionará para las estructuras ''for'', ''foreach'', ''while'', ''do-while'' o ''switch''.

$person = "Rasmus Lerdorf"; $found = false; foreach($organization as $oKey=>$department) { foreach($department as $dKey=>$group) { foreach($group as $gKey=>$employee) { if ($employee[''fullname''] == $person) { $found = true; break 3; } } // group } // department } // organization


He intentado soluciones con CSS pero no funcionó para mí.

Reemplazando href="#" por href="javascript:void(0);" funcionó ya que en este caso modal no salta a la cima y permanece en la posición del elemento de evento.


Todas estas son buenas respuestas, pero me gustaría sugerir una más que creo que es un mejor estándar de código. Puede optar por utilizar un indicador en la condición de bucle que indica si continuará o no con el bucle y evitará utilizar break all together.

$arr = array(''one'', ''two'', ''three'', ''four'', ''stop'', ''five''); $length = count($arr); $found = false; for ($i = 0; $i < $length && !$found; $i++) { $val = $arr[$i]; if ($val == ''stop'') { $found = true; // this will cause the code to // stop looping the next time // the condition is checked } echo "$val<br />/n"; }

Considero que esto es una mejor práctica de código porque no se basa en el alcance que se utiliza. Por el contrario, define una variable que indica si se rompe o no un bucle específico. Esto es útil cuando tiene muchos bucles que pueden o no anidados o secuenciales.


Usted está buscando la declaración de break .

$arr = array(''one'', ''two'', ''three'', ''four'', ''stop'', ''five''); while (list(, $val) = each($arr)) { if ($val == ''stop'') { break; /* You could also write ''break 1;'' here. */ } echo "$val<br />/n"; }



break; deja tu lazo

continue; omite cualquier código para el resto de ese bucle y pasa al siguiente bucle, siempre que la condición siga siendo verdadera.


$arr = array(''one'', ''two'', ''three'', ''four'', ''stop'', ''five''); foreach ($arr as $val) { if ($val == ''stop'') { break; /* You could also write ''break 1;'' here. */ } echo "$val<br />/n"; }