El constructor foreach proporciona un modo sencillo de iterar sobre arrays. foreach funciona sólo sobre arrays y objetos, y emitirá un error al intentar usarlo con una variable de un tipo diferente de datos o una variable no inicializada. Existen dos sintaxis:
foreach (expresión_array as $valor) sentencias foreach (expresión_array as $clave => $valor) sentencias
La primera forma recorre el array dado por expresión_array. En cada iteración, el valor del elemento actual se asigna a $valor y el puntero interno del array avanza una posición (así en la próxima iteración se estará observando el siguiente elemento).
La segunda forma además asigna la clave del elemento actual a la variable $clave en cada iteración.
<?php $array = array(1, 2, 3, 4); foreach ($array as &$valor) { $valor = $valor * 2; } // $array ahora es array(2, 4, 6, 8) unset($valor); // rompe la referencia con el último elemento ?>
Otra característica de los arrays en PHP es la posibilidad de anidar más de una dimensión. De hecho, pueden tener tantas dimensiones como quieras. Para conseguir un array multidimensional basta con incluir un array entero como parte de otro y así consecutivamente.
Ejemplo:
<?php $productos = array( 'Bolígrafo' => array( 'marca' => "Bic", 'precio' => "10", 'referencia' => "526526" ), 'Pegamento' => array( 'marca' => "Pritt", 'precio' => "30", 'referencia' => "455896" ) ); foreach($productos as $producto => $detalles) { echo "<h1> $producto </h1>"; foreach($detalles as $indice => $valor) { echo "<p> $indice:$valor </p>"; } } ?>
Tenemos un primer array llamado productos que a su vez tiene 2 elementos, bolígrafo y pegamento, cada uno contiene otro array con sus respectivas claves y valores.
La siguiente parte del código es el bucle foreach. Como el array tiene 2 niveles, el bucle un recorrido por cada producto obteniendo asi los valores.
Bolígrafo
marca: Bic
precio: 10
referencia: 526526
Pegamento
marca: Pritt
precio: 30
referencia: 455896