Inicio Noticias Cómo usar los bucles foreach de PHP

Cómo usar los bucles foreach de PHP

En este tutorial, veremos cómo usar y escribir un bucle foreach en PHP.

Un bucle foreach en PHP es perfecto para iterar sobre elementos que forman parte de una matriz indexada o una matriz asociativa. El ciclo comenzará desde el primer elemento de la matriz e iterará a través de todos los elementos en orden hasta llegar al final. También puede buscar objetos.

Hay varias razones por las que puede elegir un bucle foreach en lugar de un bucle for normal. Por ejemplo, un bucle foreach puede ser un poco más fácil de leer y comprender cuando se trata de matrices. También puede evitar usar la función contar(). Pero, por supuesto, hay muchas otras razones por las que es posible que desee elegir uno sobre el otro.

Probablemente necesitará usar bucles foreach anidados al manipular matrices multidimensionales. Sin embargo, la mayoría de las veces solo escribirá un bucle foreach profundo.

Este tutorial lo guiará a través de una amplia gama de temas sobre el uso de un bucle foreach en PHP. Cubrimos temas como arreglos, arreglos asociativos, arreglos multidimensionales, elementos de edición, uso de la instrucción break y uso de la instrucción continue.

Indice

sintaxis del bucle foreach

Hay dos formas diferentes de escribir un bucle foreach en PHP.

Nuestro primer ejemplo recorre una matriz, asignando el valor del elemento actual a la variable $value. Puede usar la variable $value en cualquier lugar del bloque de código foreach.

Nuestro segundo ejemplo es para matrices asociativas, que contendrán un rango de claves. En cada iteración, la clave actual se almacenará en la variable $key y el valor del artículo en la variable $value.

Puede escribir un bucle foreach utilizando la sintaxis alternativa. El siguiente ejemplo muestra la sintaxis alternativa para nuestro primer ejemplo, pero puede usarla en cualquier tipo de bucle foreach.

Si necesita modificar los elementos de la matriz en el ciclo, puede preceder la variable $value con &. El uso de & garantizará que a la variable se le asigne la referencia al valor y no solo una copia del valor.

Cómo usar un bucle foreach en PHP

Los bucles Foreach son la manera perfecta de recorrer los datos almacenados en una matriz. A diferencia de un bucle for normal, no necesita saber la longitud de la matriz porque el bucle foreach continuará hasta que alcance el último elemento. Puede usar break o continue si necesita salir del bucle antes de tiempo u omitir una iteración.

A continuación, repasamos todas las características principales de ejecutar un bucle foreach, incluida la escritura de una instrucción foreach para una matriz normal y una matriz asociativa.

Un bucle foreach para una matriz indexada

En este ejemplo, estamos creando un bucle foreach simple de PHP que recorrerá una matriz que contiene un rango de cadenas.

En cada iteración, el valor del elemento actual se copia en la variable $value. Dentro del bloque de código de bucle, puede usar el valor como mejor le parezca haciendo referencia a la variable $value.

El siguiente código simplemente recorre nuestra matriz y genera cada valor usando echo.

A continuación se muestra la salida del código anterior. Como puede ver, cada elemento de la matriz se imprimió en orden.

Un bucle foreach para una matriz asociativa

Si está utilizando una matriz asociativa, el método anterior seguirá funcionando; sin embargo, solo tendrá acceso al valor de cada artículo. Para que el valor clave también esté disponible, debe especificarlo en la instrucción foreach.

El siguiente ejemplo tendrá el valor clave disponible en la variable $key y el valor del elemento disponible en la variable $value. Cada iteración pasará al siguiente elemento hasta que llegue al final de la matriz.

En el resultado a continuación, puede ver el valor de la clave seguido del valor del elemento para cada elemento de la matriz.

Un bucle foreach para una matriz multidimensional

Si tiene una matriz multidimensional, deberá anidar un bucle foreach dentro de otro bucle foreach para acceder a los elementos de las matrices internas. El ciclo externo recorrerá cada una de las matrices, mientras que el ciclo interno recorrerá los elementos de cada matriz.

Puede usar foreach en matrices multidimensionales muy profundas, pero tenga en cuenta que el rendimiento y la legibilidad comenzarán a verse afectados. Los tipos más populares son las matrices bidimensionales y las matrices tridimensionales. Cualquier cosa más profunda que tres no es muy común ya que se vuelven difíciles de manejar.

En nuestro ejemplo a continuación, nuestro ciclo externo recorrerá cada matriz almacenada en nuestra matriz $fruits. El ciclo interno recorrerá cada elemento de la matriz actual.

El resultado muestra cómo funciona nuestro bucle foreach anidado en el código de muestra anterior. Cada elemento se imprime antes de pasar a la tabla siguiente. $value es la matriz actual y $value2 es el elemento actual en nuestra matriz $value.

Cambiar valores en un bucle foreach

Si está tratando de cambiar los valores usando un bucle foreach de PHP, deberá agregar & al comienzo de la variable $value. Usar & antes de la variable $value le indicará a PHP que asigne $value una referencia al valor original y no use una copia del valor de la variable.

Pasamos la referencia en lugar del valor en el siguiente ejemplo. El uso de la referencia nos permitirá modificar los elementos de la matriz dentro del bucle foreach.

También cancelamos el valor de $ después de salir del bucle. Si no deshabilita la variable $value, aún contendrá la referencia a nuestro último elemento. Si reutiliza $value sin usar unset primero, puede terminar con un comportamiento inesperado.

En el resultado a continuación, puede ver que los valores de la matriz han cambiado.

En nuestro ejemplo a continuación, no usamos la referencia y solo usamos una copia del valor del elemento de la matriz. PHP no mantendrá ningún cambio si usa el valor del elemento.

Como puede ver en la salida, no se realiza ninguno de nuestros cambios en la matriz y la matriz aparece intacta fuera del bucle foreach.

Salir de un bucle foreach

Como la mayoría de los otros bucles de PHP, puede usar la instrucción break para finalizar el bucle antes de tiempo. Es posible que desee terminar el ciclo por varias razones. Por ejemplo, encontró los datos que estaba buscando y realizó los cambios necesarios.

En nuestro ejemplo a continuación, salir del bucle foreach cuando nuestro valor es igual a «banana».

Dado que el plátano fue nuestro segundo elemento en la matriz, solo mostramos el valor del primer elemento en la matriz.

Usando continuar en un bucle foreach

Si necesita omitir o finalizar una iteración del ciclo foreach antes de tiempo, puede usar la instrucción continuar. Hay muchas razones por las que podría querer usar estafaustedinducir. Por ejemplo, omitir una iteración puede ser útil si no necesita procesar los datos en ese elemento específico.

En nuestro código a continuación, finalizamos la iteración actual antes de tiempo cuando el valor es igual a «banana».

Como puede ver en nuestro resultado a continuación, ignoramos el valor de salida cuando era igual a «banana». Después de «banana», continuamos generando el resto de los valores.

Conclusión

Al final de este tutorial, espero que tenga una buena comprensión de cómo usar un bucle foreach en PHP. Este es un bucle estándar ideal para manejar datos en matrices, por lo que es importante que comprenda cómo funcionan.

Le sugiero que busque otros bucles si es nuevo en la programación. Cada bucle tiene su caso de uso, por lo que recomiendo aprender sobre bucles while, bucles for y bucles do-while. Comprenderlos y usarlos correctamente puede ayudar a mejorar la legibilidad y el rendimiento de su código.

Si podemos mejorar este tutorial, háganoslo saber dejando un comentario a continuación.

Actualizaciones semanales directamente a su bandeja de entrada

¡Reciba nuestros proyectos de Raspberry Pi, tutoriales de codificación, guías de Linux y más!

Suscribir

Troels Platz
¿Sabéis el cuento del holandés errante que acabó viviendo en las costas de Sevilla?
RELATED ARTICLES