Uso de foreach - Curso de php: principiante
Es sin lugar a dudas, la más compleja de entender, y la que más problemas suele dar. En este capítulo, vamos a dar una primera aproximación a la sentencia, la cual ampliaremos cuando veamos el tema de arrays, y podamos utilizar FOREACH con total libertad.
El manual de php, plantea la estrucura del FOREACH de la siguiente manera:
foreach (expresión_array as $valor){
sentencias...
}
foreach (expresión_array as $clave => $valor){
sentencias...
}Ya que la sentencia permite que se pueda plantear de las dos formas. Veamos un ejemplo:
<?php
$listado = array(1, 2, 3, 4, 5);
foreach($listado as $numeros){
print $numeros."<br />";
}
?>
Lo primero es explicar los que es un array, como vemos en el código anterior. Lo explicaremos con más detalle en el próximo módulo, pero un array, es como una cesta donde guardamos una serie de datos, en este caso, dentro de la variable $listado, hemos guardado los numeros del 1 al 5. Con FOREACH lo que hacemos es recorrer ese array e ir sacando uno a uno los valores que se han almacenado dentro de él, de forma que podamos mostrarlos.
El ejemplo anterior, nos imprimiría:
1
2
3
4
5
Resumiendo, la sintaxis básica nos pide primero una variable que contenga una lista de valores, después asignamos el nombre que debe tener cada valor de la lista y creamos un bucle para mostrarlos todos. La ventaja, es que no tenemos que decirle los ciclos que dura el bucle, ya que se queda en él, mientras existan valores, lo que lo convierte en una herramienta muy eficaz.
foreach($listado_de_valores as $nombre_de_cada_valor){
sentencia...
}Es importante no olvidar el AS, que asigna cual será el nombre de cada elemento de la lista. Al principio, expliqué que habían dos opciones, la que he mostrado antes y esta:
foreach (expresión_array as $clave => $valor){
sentencias...
}Esta es un poco más elevorada, pero vamos a intentar explicarla. A veces, los arrays, son más complejos, y nos permiten añadir datos más elaborados:
$listado = array("nombre" => "Pepe", "edad" => 20);En este caso, el array, no solo tiene una lista de valores, sino que tiene el nombre al que corresponde el valor: nombre => Pepe, edad => 20. FOREACH nos permite obtener los dos campos:
<?php
$listado = array("nombre" => "Pepe", "edad" => 20);
foreach($listado as $nombre => $valor){
print $nombre ." : ".$valor."<br />";
}
?>
El resultado de esto sería:
nombre: Pepe
edad: 20
Es decir, nos permite obtener todos los datos del array mientras lo recorre. Como ya os he comentado, es probablemente junto con el IF y el FOR las sentencias más importantes, y las que más se usan.