is_page - php if is page wordpress
Simple para bucle no funciona (6)
Acabo de empezar a aprender programación. Estoy estudiando para bucles, pero este programa no funciona como se esperaba. Quiero romper el bucle cuando $a
es igual a 3
así que obtengo la salida 1 2
pero obtengo 3
como salida :(
for($a=0;$a<10;++$a)
{
if($a==3)
break
print"$a ";
}
Por favor ayuda.
Como dijo Codaddict, te falta el punto y coma después del descanso.
Su código debe verse como:
for($a=0;$a<10;++$a)
{
if($a==3)
break;
echo $a, '' '';
}
Te estás perdiendo un punto y coma al final de la pausa. ;)
E incluso con el punto y coma no funcionará como se esperaría, ya que contará de 0
a 2
. Tienes que escribirlo así para obtener solo 1 2
.
<?php
for($a=1;$a<10;++$a)
{
if($a==3)
break;
print"$a ";
}
?>
Nota $ a es ahora uno en la inicialización de bucle for.
EDITAR: Otra cosa que he notado que debe tener en cuenta. En su control de bucle for tiene un pre-incremento ( ++$a
). Eso básicamente significa que PHP incrementa el valor de $a
y luego devuelve $a
. Otra opción es el post-incremento ( $a++
) donde $a
se devuelve y luego se incrementa en uno.
En su caso, ambas formas le darán la salida correcta aunque.
Esto a veces es bastante importante. Solo tenlo en cuenta.
Usa echo
en lugar de print
.
Falta el punto y coma después del break
Es bastante interesante saber por qué su programa se comporta como lo hace.
La sintaxis general de break
en PHP es:
break Expression;
La expresión es opcional, pero si está presente, su valor indica la cantidad de estructuras anidadas que se deben separar.
break 0;
y break 1;
son lo mismo que break;
Su código es equivalente a
if($a==3)
break print"$a ";
Ahora la función de print
en PHP siempre devuelve 1
. Por lo tanto es equivalente a
if($a==3)
break 1;
así que cuando $a
es 3
imprime su valor y rompe.
Es aconsejable usar llaves para encerrar el cuerpo de un condicional o un bucle, incluso si el cuerpo tiene una sola declaración. En este caso adjuntando el cuerpo if
entre llaves:
if($a==3) {
break
}
print"$a ";
habría dado un error de sintaxis: PHP espera un ;
pero encuentra un }
Todo lo anterior se aplica a la continue
PHP también. Entonces el programa
for($a=0;$a<10;++$a)
{
if($a==3)
continue
print"$a ";
}
También imprime 3
por una razón similar.
for($a=0;$a<10;++$a)
{
if($a==3) break;
print $a;
}
@Downvoters: ¿Qué hay de malo aparte de que yo sea lacónico?
for($a=0;$a<10;$a++) {
if($a==3) { exit; }
else { echo $a; }
}