• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar a la barra lateral principal

Dani Sánchez

  • ¿Eres agencia?
  • Quién soy
  • Servicios WordPress
    • Mantenimiento
    • Maquetación & Desarrollo
    • Soporte técnico
  • Portfolio
  • Blog
  • Presupuestos
Estás en: Inicio / Cursos / 6. Matrices o Arrays (tablas) en PHP

6. Matrices o Arrays (tablas) en PHP

El 27 de junio de 2016 por dani.sanchez

Los arrays son variables especiales que permiten almacenar varios valores estructurándolos como si fuesen una tabla, de ahí a que también sean llamados “tablas”.

Un array contiene una lista de valores asociados mediante un índice, que será el identificativo de un valor en concreto.

Este índice puede ser numérico en los arrays escalares, o puede ser una cadena de caracteres en el caso de los arrays asociativos. Veremos ejemplos de cada uno.

Array escalado

$paises

 $pais[0]$pais[1]$pais[2]
Índice ->012
Valor ->«España»«Francia»«Italia»

Array asociativo

$meses

 $meses[«enero»]$meses[«febrero»]$meses[«marzo»]
Índice ->«enero»«febrero»«marzo»
Valor ->312831

La declaración de un array se hace de la siguiente forma:

<?php 
$matriz[0] = "Valor 1";
$matriz[1] = "Valor 2";
$matriz[2] = "Valor 3";
$matriz[3] = "Valor 4";
…;     
?>

Vamos a suponer que tenemos una variable llamada $paises, y que a esa variable queremos asignarle varios valores que serían nombres de países.

En lugar de crear una variable para cada país, podríamos usar una única variable contenedora que almacenara todos los países, lo que nos ahorraría tiempo y recursos.

<?php 
$paises[0] = "España";
$paises[1] = "Francia";
$paises[2] = "Italia";
$paises[3] = "Alemania";  
?>

Si queremos mostrar en pantalla el valor de uno de los elementos del array, deberemos hacer referencia al nombre del array junto a su índice:

echo $paises[2];

Imprimiría en pantalla: Italia.

Los arrays también se comportan como listas.

Pueden ser declarados como una lista de elementos formados por su índice y su valor.

<?php 
$nombre = array(‘Valor1’, ‘Valor2’, ‘Valor3’, ‘Valor4’);
?>

Si no especificamos el índice, automáticamente se convertirá en un array escalado, almacenando el primer elemento en el índice 0, y así sucesivamente, de forma que:

  • Valor1 se asociará al índice 0.
  • Valor2 se asociará al índice 1.
  • Valor3 se asociará al índice 2.
  • Etc.

Pero también podemos especificar el índice al construir la lista, por ejemplo:

<?php 
$nombre = array('dias' => 10, 
                'color' => 'azul', 
                'marca' => 'Seat');
?>

La estructura de la lista sería:

Índice‘días’Índice‘color’Índice‘marca’
Valor10Valor‘azul’Valor‘Seat’
Primer elementoSegundo elementoTercer elemento

Con lo cual esta misma lista se habría podido declarar de la otra forma:

<?php 
$nombre['dias'] = 10;
$nombre['color'] = 'azul';
$nombre['marca'] = 'Seat';
?>

Podemos realizarlo de la forma que nos resulte más cómoda:

¿Cómo podemos recorrer o movernos dentro de un array?

El propósito de crear arrays es el de poder agrupar conjuntos de valores que puedan ser manipulados fácilmente, para ello PHP ofrece mecanismos para manipular y movernos dentro de un array.

El bucle foreach

foreach recorre un array como si se tratara de una lista de elementos, empezando por el primero hasta el último.

La declaración se realiza de la siguiente forma:

<?php 
foreach ($nombrearray as $indice => $valor){
     Recorrido de elementos
}     
?>

En la declaración se especifican 3 parámetros:

  1. El nombre del array.
  2. El índice.
  3. El valor correspondiente al elemento.

Es posible que no necesitemos obtener el índice, con lo cual podemos suprimir $indice de la lista de parámetros de foreach, quedando simplemente:

foreach($nombrearray as $valor)

El índice podemos necesitarlo si vamos a manipular el array, como borrar un elemento a partir de su índice, modificarlo, movernos a un elemento en concreto, etc. Pero si lo único que vamos a hacer es mostrar la lista de elementos, no lo necesitamos.

Ejemplo de uso de foreach:

<?php
     $semana[0] = "Lunes";
     $semana[1] = "Martes";
     $semana[2] = "Miércoles";
     $semana[3] = "Jueves";
     $semana[4] = "Viernes";
     $semana[5] = "Sábado";
     $semana[6] = "Domingo";
  
     foreach ($semana as $indice => $valor){
          echo $indice . " " . $valor . "<br/>";
     }     
?> 

Este ejemplo imprimiría en pantalla:

0 Lunes
1 Martes
2 Miércoles
3 Jueves
4 Viernes
5 Sábado
6 Domingo

Los arrays disponen de un cursor interno que es el encargado de posicionarse sobre cada uno de los elementos.

Este cursor podemos manejarlo con algunas funciones de PHP:

  • reset($nombrearray): Coloca el cursor sobre el primer elemento del array.
  • next($nombrearray): Mueve el cursor al siguiente elemento. Si no existen más elementos, la función devuelve false.
  • prev($nombrearray): Mueve el cursor al elemento anterior. De no haberlo, la función devuelve false.
  • end($nombrearray): Coloca el cursor sobre el último elemento del array.
  • current($nombrearray): Devuelve el valor del elemento sobre el que está situado el cursor en ese momento. De no existir ningún valor, devolverá false.
  • key($nombrearray): Devuelve el índice del elemento sobre el que está situado el cursor en ese momento. Si no existe ningún elemento, devolverá NULL.

Veamos un ejemplo usando las funciones de manejo del cursor de un array.

Haciendo uso del ejemplo anterior con el array $semanas[ ], supongamos que únicamente queremos mostrar los días del Lunes al Jueves.

Si usamos un bucle foreach, los recorrerá todos desde el primero al último, pero haciendo uso de las funciones vistas podemos hacer:

<?php
     $semana[0] = "Lunes";
     $semana[1] = "Martes";
     $semana[2] = "Miércoles";
     $semana[3] = "Jueves";
     $semana[4] = "Viernes";
     $semana[5] = "Sábado";
     $semana[6] = "Domingo";
  
     while(key($semana) != 4){
          echo $semana[key($semana)] . "<br/>";
          next($semana);     
?>

Vamos a analizar con detenimiento este bucle while:

La función key() devuelve el índice sobre el que se encuentra el cursor en ese momento. Por tanto la condición de repetición del bucle while es que el cursor no llegue a 4.

En la siguiente instrucción, pedimos que imprima en pantalla el valor actual de $semana[ ] pasándole como índice, el índice actual en el que nos encontramos con key($semana).

La última instrucción next($semana), mueve el cursor hacia el siguiente elemento.

Cuando el índice llega a 4, la condición de repetición del bucle no se cumple, y finaliza.

La traducción literal del bucle sería:

Mientras el índice actual del array semana NO sea igual a 4…
muestra en pantalla el elemento sobre el cual está situado el cursor en este momento.
coloca el cursor en el siguiente elemento del array.
Fin

El resultado en pantalla mostraría:

Lunes
Martes
Miércoles
Jueves

Eliminar elementos de un array

Si necesitamos eliminar alguno de los elementos almacenados en un array, podemos usar la función unset().

Esta función espera que le pasemos como parámetro el nombre del array y el índice del elemento que deseamos borrar, quedando la expresión de la siguiente forma:

<?php 
unset($nombrearray[índice]);
?>

Ejemplo:

<?php 
unset($semana[2]);
?>

Eliminaría el valor “Miércoles” del array.

Hay que mencionar, que unset() no modifica el orden lógico de los elementos del array, lo que ocurre es, que si eliminamos el elemento nº 2 del array, entonces el tercer elemento ocupará su lugar, el cuarto pasará al tercero y así sucesivamente.

AntesDespués
0 Lunes
1 Martes
2 Miércoles
3 Jueves
4 Viernes
5 Sábado
6 Domingo
0 Lunes
1 Martes
2 Jueves
3 Viernes
4 Sábado
5 Domingo

Obsérvese cómo se han reordenado los índices tras borrar uno de los elementos del array.

Es posible eliminar un array entero si no le pasamos ningún parámetro a la función unset.

unset($semana);

Esta función destruye todo el array, no solo los elementos internos, si no el array en sí.

Si lo que queremos es eliminar únicamente los elementos usaríamos el constructor array() sin pasarle ningún parámetro.

$semana = array();

Extraer un elemento aleatorio de un array

Una función interesante dentro del uso de arrays es la posibilidad de extraer un elemento aleatorio cada vez que se invoque el programa, por ejemplo, cada vez que se actualice el navegador web.

Podemos tener un array con varios nombres de imágenes y que estas sean mostradas de forma aleatoria cada vez que se cargue la página.

Para ello haremos uso de la función array_rand().

Esta función espera como parámetro el nombre del array, y devuelve uno de los índices contenidos al azar.

Veamos un ejemplo:

<?php 
$imagenes = array('imagen1.png', 'imagen2.png', 'imagen3.png');
$mostrar = array_rand($imagenes);
echo $imagenes[$mostrar];
?>

El array declarado contiene 3 elementos correspondientes a los nombres de tres imágenes PNG.

Usamos la función array_rand() pasándole como parámetro el nombre del array: array_rand($imagenes), el cogerá uno de los índices del array al azar, y lo almacenamos en una variable llamado $mostrar.

Seguidamente imprimimos en pantalla el resultado, con echo $imagenes[$mostrar], donde $mostrar será el índice escogido aleatoriamente.

Publicado en: Cursos, Iniciación a PHP

¿Quiéres invitarme a un café?

Si te has fijado en este blog no hay ni rastro de publicidad, todo el contenido publicado lo hago de forma artruista al igual que yo recurro a otros sitios cuando necesito algo. Pero si te he servido de ayuda y quieres agradecérmelo, puedes hacer una pequeña donación (el importe que quieras):

Entradas similares

  • Cerrar modales de Elementor con JavaScript (jQuery)
  • Redirección 301 para cambios de dominio
  • Guía rápida de Flexbox
  • Filtro de WooCommerce para personalizar el mensaje de «Gracias por tu pedido»
  • Portátiles reacondicionados, ¿mejor que uno nuevo?

Barra lateral principal

Autor

Dani Sánchez

logo mastodon @danisanchez

Entradas recientes

  • Iniciar sesión en nuestros VPS mediante SSH Keys
  • Cerrar modales de Elementor con JavaScript (jQuery)
  • Redirección 301 para cambios de dominio
  • Guía rápida de Flexbox
  • Filtro de WooCommerce para personalizar el mensaje de «Gracias por tu pedido»

Comentarios recientes

  1. Brandon Portes en Taller de verano de WooCommerce #1
  2. Sebastian en Instalar WordPress + MySQL + phpMyAdmin desde Docker Compose
  3. Rigol en Instalar LAMP (Linux, Apache, MySQL y PHP) en Fedora
  4. dani.sanchez en Instalar WordPress + MySQL + phpMyAdmin desde Docker Compose
  5. rikylinux en Instalar WordPress + MySQL + phpMyAdmin desde Docker Compose

Categorías

  • Actualidad
  • Afiliación AliExpress
  • Agent Press Pro
  • Bettaso Web Restaurantes
  • Cursos
  • Destacado
  • Divi
  • Drupal
  • Elementor
  • Genesis
  • Iniciación a PHP
  • Joomla!
  • Linux
  • Publicaciones
  • Tutoriales
  • WooCommerce
  • WordPress
Medium banner says Support Inkscape
Banner pie de página

Maquetación web, landings, blogs y tiendas online
cuidando hasta el mínimo detalle

Si necesitas que desarrolle tu proyecto web ponte en contacto conmigo.

Contacto
  • Mastodon
  • YouTube
  • LinkedIn

Alojado con energía 100% verde

Dani Sánchez © 2025 · Política de privacidad · Política de cookies