the_excerpt page is_page get_the_excerpt excerpt php syntax loops for-loop break

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; } }