PHP foreach(): Bucles para recorrer arrays y objetos

Con la función PHP foreach() podemos recorrer los diferentes tipos de arrays y objetos de una manera controlada. Vamos a ver en este post varios ejemplos y sintaxis de esta estructura de control de PHP.

Quizás os parezcan interesantes estas otras funciones para manejar arrays: PHP count(), PHP array_push() o las funciones sort(), asort y ksort() para ordenar arrays.

Unas funciones con funcionamiento similar son:

Sintaxis PHP foreach()

Vamos a ver las 2 opciones de sintaxis que tiene esta función según su web oficial:

foreach (expresion as $value)
   {
   //acciones
   }

En esta primera sintaxis el bucle asigna a la variable $value el valor del elemento actual que está recorriendo en ese momento, en la siguiente iteración devolverá el siguiente valor.

Voy con el segundo tipo de sintaxis:

foreach (expresion as clave=>$value)
   {
   //acciones
   }

Esta vez el bucle el valor se asocia a una clave (nombre de campo), podemos llamarlo ‘array asociativo‘.

En ambos casos el bucle siempre comienza por el primer elemento del array u objetofinalizará al terminar de procesar el último elemento.

Ejemplo de PHP foreach con los arrays $_POST y $_GET

Vamos a ver en este primer ejemplo de PHP foreach la manera de recorrer los valores de los arrays de formularios $_POST y $_GET.

<form name="formulario" action="013-php-foreach-post-get.php" method="POST">
 Introduce tu nombre: <input type="text" name="nombre">
 Introduce la edad <input type="text" name="edad">
 <input type="submit" value="Enviar">
</form>

En las líneas superiores os he puesto el código del formulario con método POST con sus 2 campos de tipo text que voy a usar en el ejemplo. Ahora os pongo el código PHP:

if($_POST)
 {
 foreach ($_POST as $clave=>$valor)
     {
     echo "El valor de $clave es: $valor";
     }
 }

Explico el código superior:

  • Primero pregunto si el array $_POST tiene valores o está vacío.
  • En caso de tener valores, recorro todos los valores y asigno a la variable ‘clave’ el valor enviado.
  • En la variable $clave se guarda el nombre del input, y en la variable $valor el valor del campo enviado.

Ahora os pongo el código para recoger los valores del mismo formulario pero con método GET:

if($_GET)
 {
 foreach ($_GET as $clave=>$valor)
     {
     echo "El valor de $clave es: $valor";
     }
 }

En cuanto al código de arriba no hay nada nuevo que explicar salvo que el contenido lo cogemos del array $_GET.

Ejemplo de PHP foreach() para recorrer arrays

Os voy a poner el ejemplo que puse en el post ‘PHP array(): Tipos y ejemplos para recorrer arrays‘, su funcionamiento es muy parecido al ejemplo anterior.

$equipo = array(portero=>'Cech', defensa=>'Terry', medio=>'Lampard', delantero=>'Torres');

foreach($equipo as $posicion=>$jugador)
 {
 echo "El " . $posicion . " es " . $jugador;
 }

Podemos ver el código superior funcionado en el ejemplo para recorrer un array asociativo del post anteriormente mencionado. La misma explicación que puse en los ejemplos de $_POST y $_GET vale para comprender este ejemplo.

Ejemplo de PHP foreach() para recorrer, leer y parsear un XML

Vamos a ver cómo se puede leer un xml con la función PHP foreach(), imaginemos que el XML tiene esta estructura:

<?xml version='1.0'  encoding='UTF-8'?>
   <colores>
      <color>
         <nombre>Negro</nombre>
         <codigo_hexadecimal>000000</codigo_hexadecimal>
      </color>
      <color>
         <nombre>Blanco</nombre>
         <codigo_hexadecimal>ffffff</codigo_hexadecimal>
      </color>
   </colores>

El XML contiene información de 2 colores y sus códigos hexadecimales, el código PHP necesario para leer dicha información sería el siguiente:

$xml = simplexml_load_file("NOMBREXML.xml");

foreach ($xml->color as $color) 
 {
 echo "El color " . $color->nombre ." tiene el código hexadecimal " . $color->codigo_hexadecimal ." <br>"; 
 }

Podéis ver en esta URL el ejemplo de PHP foreach() para leer un XML en funcionamiento.

Explico el código:

  • En la variable $xml guardo la estructura del XML a través de la función PHP simplexml_load_file().
  • Después recorro el XML y voy guardando en la variable $color los tags de cada color.
  • Por último saco los valores de cada color.

Otras funciones para trabajar con arrays

Os recomiendo leer este otro post sobre funciones para trabajar con arrays en PHP.

compartir
Publicado por
Aner Barrena