cancel - ¿Qué significa un número después de "romper" o "continuar" en PHP?
php foreach break (4)
El número solo dice "cuántos ámbitos saltar de"
<?php
for($i = 0; $i < 10; ++$i) {
for($j = 0; $j < 10; ++$j) {
break 2;
}
}
$ i y $ j serán 0
Para citar el manual:
continue acepta un argumento numérico opcional que le indica cuántos niveles de bucles de delimitación deben omitirse hasta el final.
lo mismo vale para el descanso.
¿Podría alguien explicar, por ejemplo, qué se entiende por break 2
bucle break 2
o continue 2
en PHP? ¿Qué significa cuando break
o continue
es seguido por un número?
romper: romper el bucle más interno (salir del bucle)
break 2: rompe los 2 bucles de nivel de anidamiento (sale de los 2 bucles anidados)
continuar: forzar ciclo para la siguiente iteración desde donde se usa sin ejecutar el resto del código de bucle
continuar 2: forzar bucle para la siguiente 2 iteraciones desde donde se usa sin ejecutar el resto del código de bucle
salir del bucle cuando nos encontremos con $array
value para ser 5
break
$array(4,5,8);
for ($i=0 ;$i < 10 $i ++)
{
if ($array[$i]==5)
{
break;
}
}
romper (n)
Salga de ambos bucles cuando encontremos el valor 5 en $ array;
for ($i=0 ;$i < 10 $i ++)
{
for($j=0; $j <10; $j++)
{
if ($array[$i][$j]==5)
{
break 2;
}
}
}
continuar
Imprimirá el mensaje cuando el valor sea 5;
for($i=0; $i<10; $i++)
{
if ($array[$i] != 5)
{
continue;// will reach at the first line from here which is for($i=0;.....
}
echo ''This is five'';
}
}
break acepta un argumento numérico opcional que le dice de cuántas estructuras de alojamiento anidadas se deben separar .
<?php
$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";
}
/* Using the optional argument. */
$i = 0;
while (++$i) {
switch ($i) {
case 5:
echo "At 5<br />/n";
break 1; /* Exit only the switch. */
case 10:
echo "At 10; quitting<br />/n";
break 2; /* Exit the switch and the while. */
default:
break;
}
}
?>
continue acepta un argumento numérico opcional que le indica cuántos niveles de bucles de delimitación deben omitirse hasta el final. El valor predeterminado es 1, omitiendo así el final del ciclo actual.
<?php
while (list($key, $value) = each($arr)) {
if (!($key % 2)) { // skip odd members
continue;
}
do_something_odd($value);
}
$i = 0;
while ($i++ < 5) {
echo "Outer<br />/n";
while (1) {
echo "Middle<br />/n";
while (1) {
echo "Inner<br />/n";
continue 3;
}
echo "This never gets output.<br />/n";
}
echo "Neither does this.<br />/n";
}
?>
$array = array(1,2,3);
foreach ($array as $item){
if ($item == 2) {
break;
}
echo $item;
}
emite "1" porque el bucle se rompió para siempre, antes de que echo pudiera imprimir "2".
$array = array(1,2,3);
foreach ($array as $item){
if ($item == 2) {
continue;
}
echo $item;
}
salidas 13
porque se pasó la segunda iteración
$numbers = array(1,2,3);
$letters = array("A","B","C");
foreach ($numbers as $num){
foreach ($letters as $char){
if ($char == "C") {
break 2; // if this was break, o/p will be AB1AB2AB3
}
echo $char;
}
echo $num;
}
da como resultado AB
debido a la break 2
, lo que significa que ambas declaraciones se rompieron bastante temprano. Si esto fuera solo una break
, la salida habría sido AB1AB2AB3
.
$numbers = array(1,2,3);
$letters = array("A","B","C");
foreach ($numbers as $num){
foreach ($letters as $char){
if ($char == "C") {
continue 2;
}
echo $char;
}
echo $num;
}
dará salida a ABABAB
, debido a continue 2
: el ciclo externo se pasará cada vez.
En otras palabras, continue
detiene la ejecución de la iteración actual pero permite que otra se ejecute, mientras que el break
detiene por completo la instrucción.
Por lo tanto, podemos continue
que es aplicable únicamente para los bucles, mientras que el break
se puede usar en otras declaraciones, como el switch
.
Un número representa el número de declaraciones anidadas afectadas.
si hay 2 bucles anidados, la break
en el interior romperá el interno (sin embargo, tiene muy poco sentido ya que el bucle interno se lanzará nuevamente en la siguiente iteración del bucle externo). break 2
en el lazo interno romperá ambos.