Bucles for en PHP

La estructura de control for en PHP define un tipo de bucles (código que se ejecuta repetidamente) y tiene la siguiente sintaxis:

for (exp1; exp2; exp3) {
  sentencia/s
}

Donde:

exp1 es una expresión que se ejecuta una vez, y de forma incondicional, antes de iniciar el bucle. Suele utilizarse para dar un valor inicial al índice del bucle.

exp2 es una expresión evaluada al inicio de cada iteracción del bucle, de forma que, si es verdadera se continúa ejecutando el bucle, y si es falsa termina y sale del bucle.

exp3 es una expresión evaluada al final de cada iteracción del bucle. Suele utilizarse para incrementar el valor del índice del bucle.

Ejemplo:

for ($i=1; $i<=10; $i++) {
  echo $i . '<br>';
}

… que escribirá los números del 1 al 10.

Otra forma válida de escribir un bucle for en PHP es de la siguiente forma:

for (exp1; exp2; exp3):
  sentencia/s
endfor;

… cuyo funcionamiento es exactamente el mismo que en la estructura anterior.

Cabe decir que las expresiones dadas en el bucle for pueden estar vacías, o bien contener subexpresiones múltiples (separadas por comas).

Si dejamos exp2 vacío, éste tomará el valor true y el bucle será recorrido indefinidamente, o bien podemos salir del mismo haciendo uso de las sentencias break o goto.

El uso de break dentro de un bucle for terminaría su ejecución, continuando por la siguiente sentencia posterior al bucle.

El uso de goto dentro de un bucle for haría saltar a otro punto del código fuente del programa, definido por etiqueta, de forma que goto etiq1 saltaría hasta el punto del código fuente donde esté definida la etiqueta etiq1.

Veamos un ejemplo que contenga todo ésto:

for ( ; ; ) {
  $i++;
  echo $i . '<br>';
  if ($i==10) { break }
}

… que sería equivalente a este otro código:

for ( ; ; ) {
  $i++;
  echo $i . '<br>';
  if ($i==10) { goto e1 }
}
// (...)
e1:
// a este punto saltamos tras la ejecución del goto

Ambos ejemplos anteriores hacen lo mismo que vimos en el primer ejemplo de este artículo, escribir los números del 1 al 10.