- Arrays en PHP: El array multidimensional
- Arrays en PHP: Array asociativo y asignación de valores
- Arrays en PHP: Acceso básico mediante índice numérico
- Arrays en PHP: Recorrer un array con el bucle foreach
- Arrays en PHP: Funciones de array básicas
PHP proporciona un bucle específico para recorrer los arrays, sobre todo los asociativos, y es el bucle foreach. Usándolo, recorres uno a uno los elementos de un array pudiendo hacer las acciones que desees con cada uno.
El bucle comienza con el primer elemento del array y finaliza con el último sin necesidad de saber cuántos elementos tiene. Un ejemplo de uso
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php $productos = array("Bolígrafos", "Lápices", "Goma de borrar", "Rotuladores"); $j = 0; foreach($productos as $elemento) { echo "Elemento $j: $item <br>"; ++$j; } ?> |
Cuando PHP se encuentra la declaración foreach, toma el primer elemento del array y lo asigna a la variable seguida de la palabra clave as, $elemento. Cuando vuelve al inicio, vuelve asignar a la variable $elemento el siguiente elemento del array y así hasta terminar de recorrer el array.
Recorrer un array asociativo
El array asociativo es aquel que no precisa de índices numéricos. En caso del array asociativo el funcionamiento es similar pero, podemos hacer referencia tanto al nombre del índice como al valor que contiene.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php $producto = array('producto' => "Bolígrafo azul", 'marca' => "Bic", 'laser' => "Laser Printer", 'precio' => "0.75€", 'referencia' => "552BIC12"); foreach($producto as $indice => $descripcion) { echo "$indice: $descripcion <br>"; } ?> |
En esta ocasión, cada pareja índice-valor se guardan en las variables $indice y $descripcion respectivamente. Luego se imprimen por pantalla quedando el siguiente resultado
producto: Bolígrafo azul
marca: Bic
laser: Laser Printer
precio: 0.75€
referencia: 552BIC12
Poder referenciar un índice puede ayudar a la hora de usar condicionales con datos que se saquen de la base datos.
Método alternativo al foreach
Una alternativa a la sintáxis de foreach, aunque un poco más complicada, es emplear la función list() junto la función each() en un bucle while.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php $producto = array('producto' => "Bolígrafo azul", 'marca' => "Bic", 'laser' => "Laser Printer", 'precio' => "0.75€", 'referencia' => "552BIC12"); while (list($indice, $descripcion) = each($producto)) { echo "$indice: $descripcion <br>"; } ?> |
En un bucle while, se continúa ejecutando hasta que la condición que contenga devuelve un FALSE. En este ejemplo, un bucle while se ejecuta mientras la función each() no devuelva FALSE. Lo que hace la función each es devolver la pareja índice-valor de un array, en este caso de $producto, y mover el puntero que está dentro del array al siguiente elemento. Cuando no haya más elementos devuelve un FALSE.
La función list() lo que hace es tomar un array como argumento, que en este caso sería el índice-valor que devolvería la función each(). Luego asigna los valores del array a las variables listada dentro del paréntesis. Básicamente, asgina a las variables que tengamos dentro del paréntesis los valores de un array siguiendo un orden. Por ejemplo
1 2 3 4 |
<?php list($valor1, $valor2) = array('Tinta', 'Lápiz'); echo "Valor1=$valor1 Valor2=$valor2"; ?> |
Esto devolvería
Valor1=Tinta Valor2=Lápiz
En caso de ser un array con más elementos, habría que meter dentro de list tantas variables como elementos tenga el array.
Y hasta aquí recorrer un array con foreach, espero que os sea de ayuda. A seguir picando 🙂