Estructuras de control: bucle foreach

El bucle foreach

El bucle foreach es un tipo especial de bucle que permite recorrir estructuras que contienen varios elementos (como matrices, recursos u objetos) sin necesidad de preocuparse por el número de elementos.

Problemas al recorrer matrices con el bucle for

En otros lenguajes de programación en los que los índices de las matrices son números naturales correlativos, las matrices se pueden recorrer fácilmente con bucles for. Pero como las matrices de PHP son matrices asociativas y los índices de las matrices no tienen por qué ser valores numéricos correlativos, nos podemos encontrar con problemas. Por ejemplo, podemos hacer involuntariamente referencia a un término inexistente o algunos términos pueden resultar inaccesibles.

Sintaxis del bucle foreach

La sintaxis del bucle foreach puede ser una de las siguientes:

foreach ($matriz as $valor) {
    bloque_de_sentencias
}
foreach ($matriz as $indice => $valor) {
    bloque_de_sentencias
}

La ejecución de esta estructura de control es la siguiente:

El bucle se ejecuta tantas veces como elementos tiene la matriz. En cada iteración, las variables $indice y $valor van tomando los valores de los índices y de la matriz para ese índice.

Si sólo se necesitan los valores almacenados en la matriz se puede utilizar tanto la primera como la segunda forma. Si se necesitan tanto los índices como los valores se debe utilizar la segunda forma. Si sólo se necesitan los índices también se debe utilizar la segunda forma.

Diagrama de flujo

El diagrama de flujo siguiente muestra la ejecución de un bucle foreach ...:

DIAGRAMA DE FLUJO: BUCLE FOREACH Haga clic en los botones de avance y retroceso para ver la ejecución paso a paso El programa llega al bucle foreach. INICIO Evalúa si la matriz tiene elementos ... ¿Hay elementos en la matriz? Si no hay ningún elemento, termina el bucle foreach. false FIN Si hay algún elemento, asigna el primer elemento a la variable auxiliar ... true Asigna primer valor ... ejecuta el bloque de instrucciones ... Bloque ... y evalúa si hay más elementos. ¿Quedan elementos en la matriz? Si los hay, asigna el siguiente valor a la variable auxiliar ... true Asigna valor siguiente ... vuelve a ejecutar el bloque ... ... y vuelve a evalúar si hay más elementos. ¿Quedan elementos en la matriz? Si no los hay, termina el bucle foreach. false FIN El programa llega al bucle foreach. INICIO Evalúa si la matriz tiene elementos ... ¿Hay elementos en la matriz? Si no hay ningún elemento, termina el bucle foreach. false FIN Si hay algún elemento, asigna el primer elemento a la variable auxiliar ... true Asigna primer valor ... ejecuta el bloque de instrucciones ... Bloque ... y evalúa si hay más elementos. ¿Quedan elementos en la matriz? Si los hay, asigna el siguiente valor a la variable auxiliar ... true Asigna valor siguiente ... vuelve a ejecutar el bloque ... Bloque ... y vuelve a evalúar si hay más elementos. ¿Quedan elementos en la matriz? Si no los hay, termina el bucle foreach. false FIN

Ejemplos de bucles foreach ...

Matrices

Consultas a bases de datos

Por completar