Contenidos
Introducción a los Arrays
Es una estructura compuesta de datos.Un array en php va a ser una colección de elementos (datos) accesibles a través de la variable.
Cada elemento puede ser de cualquier tipo
Los elementos del array se almacenan a partir de un índice que también puede ser de cualquier tipo simple En php existe una primera clasificación según el valor que tengan en el índice:
<?php
$notas[0]= 10;
$notas[1]= 9;
?><?php
$capital['francia']= 'paris';
$notas['españa']= 'madrid';
?>Un array es una estructura de datos que permite almacenar varios valores en una única variable.
Un array es un tipo de dato compuesto cuyos elementos se identifican mediante una clave o índice, que puede ser un número entero (int) o una cadena de texto (string).
Los arrays en PHP son estructuras muy flexibles y dinámicas:
Pueden almacenar valores de distintos tipos de datos, incluso otros arrays.
Pueden crecer o reducirse durante la ejecución, sin necesidad de declarar previamente su tamaño.
Sus índices pueden ser números enteros o cadenas de texto.

A diferencia de los arrays tradicionales de algunos lenguajes, los arrays de PHP son estructuras dinámicas, implementadas internamente como tablas hash ordenadas.
Los arrays de PHP son especialmente potentes y flexibles, ya que permiten representar estructuras que en otros lenguajes suelen diferenciarse, como arrays, listas, diccionarios o mapas. Sus elementos se organizan en parejas clave → valor, donde las claves pueden ser números enteros o cadenas de texto. Esta característica facilita también el trabajo con datos en formato JSON, especialmente con los objetos JSON, que pueden convertirse en arrays asociativos de PHP.
Array indexado vs array asociativo
Para acceder a los elementos de un array utilizamos una clave o índice. En PHP, esta clave no tiene por qué representar la posición que ocupa el elemento.
Habitualmente distinguimos dos formas de utilizar los arrays:
Array indexado: utiliza claves numéricas enteras. Cuando no especificamos las claves, PHP las genera automáticamente, comenzando normalmente por cero.
Array asociativo: utiliza claves con un significado propio, generalmente cadenas de texto, que permiten identificar los valores por su nombre.

Podemos añadir elementos con claves de texto a un array indexado en cualquier momento, combinando así claves numéricas y asociativas.
En realidad, PHP utiliza un único tipo de array. La diferencia entre indexado y asociativo depende de las claves utilizadas.
Cuando no indicamos una clave, PHP genera automáticamente una clave entera siguiendo sus reglas de indexación (Crea un valor numérico incrementando el último que se hubiera utilizado).
<?php
// array numérico
$modulos1 = array(0 => "Programación",
1 => "Bases de datos",
9 => "Desarrollo web en entorno servidor");
// array asociativo
$modulos2 = array("PR" => "Programación",
"BD" => "Bases de datos",
"DWES" => "Desarrollo web en entorno servidor");
var_dump($modulos1);
var_dump($modulos2);
$modulos1 = [0 => "Programación",
1 => "Bases de datos",
9 => "Desarrollo web en entorno servidor"];
// array asociativo
$modulos2 = ["PR" => "Programación",
"BD" => "Bases de datos",
"DWES" => "Desarrollo web en entorno servidor"];
var_dump($modulos1);
var_dump($modulos2);
?>Como ya hemos visto. los arrays en php se pueden clasifican en función de la clave que llevan:
Clave numérica posicional ( Array Indexado) : La clave especifica la posición de cada elemento.
Clave con valor (Array Asociativo): La clave tiene un significado semántico y tiene asociado un valor.
En los Arrays indexados, el índice empieza por 0.
El contenido de un elemento de un array puede ser cualquier valor, incluido otro array, puediendo fácilmente construir estructuras mas complejas o arrays N-dimensionales, como veremos en ejemplos posteriores.
Crear un array
A la hora de trabajar con arrays, hay que saber operar con ellos:
- Crear o definir un array.
- Asignar, agregar valores al array.
- Leer elementos del array.
- Borrar elementos del array.
Para crear un array lo podemos hacer:
- Con el operador array();
- A partir de la versión 5.3 se puede (y recomienda) usar directamente el operador []
<?php
/*
Creamos una variable '''array''' llamada ''miArray'' vacía.
Dos formas equivalentes:
*/
$miArray = array();
$miArray = [];
/*
Creamos un array indexado de ciudades
*/
$miArray = array("Burgos","Zaragoza","Huesca", "Teruel","Soria");
$miArray = ["Burgos","Zaragoza","Huesca", "Teruel","Soria"];
var_dump($miArray);
?>Escribiendo: Añadir y modificar elementos
Para escribir en un array, simplemente especificamos la clave entre corchetes y le asignamos un valor. Para leer un elemento, utilizamos la misma sintaxis.
Si la clave no existe, PHP la creará automáticamente. Si la clave ya existe, el valor se sobrescribirá.
<?php
$notas =[];
$notas[]=10;
$notas[]=7;
$notas[5]= 8;
$notas [] =9;
$notas [] =6;
var_dump($notas);
?>

<?php
$notas = [1,2,3,4,5]; //Creo un array con 5 notas
$notas[5] = 6; //añado un nuevo elemento en la posición 5=> 6
$notas = [9]; //Estoy creando un nuevo array con una sola nota 0=>9
?>Si quiero añadir varios elementos a un array, puedo hacerlo con funciones específicas (hablamos de añadir elementos a un array, no de crear un nuevo array a a partir de dos o más arrays):
- Con funciones
- array_push() (añadir al final)
- array_unshift() (añadir al principio)
- array_splice() Esta función es de propósito más genera, ya que permite insertar, eliminar o sustituir elementos en una posición determinada. En arrays con claves numéricas, los índices se reorganizan consecutivamente a partir de cero. Las claves de tipo string se conservan.
<?php
$notas = [1,2,3,4];;
var_dump($notas);
array_push($notas, 5,6,7); //Añade al final
echo "<h2>Añadiendo al final [5,6,7]</h2>";
var_dump($notas);
array_unshift($notas, 8,9); //Añade al inicio
echo "<h2>Añadiendo al principio [8,9]</h2>";
var_dump($notas);
$last = sizeof($notas);
array_splice($notas, $last, 0, [10,11]); //Añade al final 10,11
echo "<h2>Añadiendo al final [10,11]</h2>";
var_dump($notas);
array_splice($notas, 1, 0, ["un valor", "otro"]); //Añade en la poss 1y 2 dos elementos desplazando el resto
echo "<h2>//Añade en la poss 1y 2 dos elementos desplazando el resto</h2>";
var_dump($notas);
?>Eliminar elementos
Para eliminar un array:- unset() Podemos usar esta función que es para eliminar cualquier variable.
- null, y también podemos asignarle el valor null
<?php
$notas = [1,2,3,4,5];
var_dump($notas);
unset($notas); //Elimina el array
var_dump($notas); //Aquí saldrá un warning, ya que la variable ya no existe
$notas = [1,2,3,4,5];
var_dump($notas);
$notas = null; //Elimina el array
var_dump($notas);
?>Procedemos igual,pero especificando a través de su clave el elemento que queremos eliminar.
Recorrer un array
Arrays multidimensionales
Funciones y operaciones sobre arrays
Funciones habituales
Funciones con parámetros de callback
Operadores de arrays
MRM hablar del desempaquetado (...)
Ejercicios
- Crea un array indexado con 5 países y recórrelo utilizando
for. - Crea un array asociativo con 5 países como claves y sus capitales como valores.
- Recorre el segundo array utilizando
foreach.
- Crea un array indexado con 5 elementos: números enteros, cadenas y, como quinto elemento, otro array de 3 valores.
- Muéstralo utilizando
var_dump(). - Añade elementos en los índices
15y30y vuelve a mostrarlo. - Reorganiza el array, sin utilizar funciones de arrays, para que sus elementos ocupen índices consecutivos, conservando todos los valores.
- Crea un array con 10 notas aleatorias.
- Muestra todas las notas.
- Calcula la media, la nota máxima y la mínima.
Condición: resuélvelo de forma algorítmica, sin utilizar funciones de arrays para realizar los cálculos.
- Crea un array de 15 notas inicializadas a
0. - Asigna valores aleatorios entre
5y10. - Muestra las notas y calcula el máximo, el mínimo y la media.
- Crea otro array de 15 notas aleatorias entre
0y5. - Combina ambos arrays y vuelve a calcular los valores estadísticos.
- Recorre el resultado con
foreachy conreset(),current(),key()ynext(), mostrando claves y valores. - Busca la posición del primer
10y comprueba si existen las notas7y4. - Ordena las notas de forma ascendente y descendente.
- Elimina los valores repetidos.
Condición: utiliza las funciones de arrays estudiadas.
- Crea un array con las URL de varias imágenes.
- Muestra 3 imágenes aleatorias, sin repetir ninguna.
- Actualiza la página cada 5 segundos para mostrar otras 3 imágenes.
💡 Ayuda: recarga de página y array de imágenes
Para recargar automáticamente una página cada 5 segundos puedes utilizar esta etiqueta HTML dentro de <head>:
<meta http-equiv="refresh" content="5">Si deseas indicar expresamente la página que se recargará:
<meta http-equiv="refresh" content="5; url=vuestra_pagina.php">Array de imágenes de ejemplo:
<?php
$imagenes = [
"https://es.wikieducator.org/images/3/3d/Ajax_cliente_servidor.png",
"https://es.wikieducator.org/images/7/7b/Funcionamiento_ajax.png",
"https://es.wikieducator.org/images/a/aa/Angular_app_base.png",
"https://es.wikieducator.org/images/3/3d/Docker_distancia_1.png",
"https://es.wikieducator.org/images/4/4e/Opcion_Instalar.png",
"https://es.wikieducator.org/images/a/ab/AplicacionWeb.png",
"https://es.wikieducator.org/images/e/e4/Red3.png",
"https://es.wikieducator.org/images/f/f2/DACTW.png",
"https://es.wikieducator.org/images/e/e5/M3_web.png",
"https://es.wikieducator.org/images/a/a6/Ficheros.jpeg"
];Partiendo del siguiente array de productos: Vamos a hacer una tienda dónde visualicemos :
- Un formulario con los productos a comprar

- Un informe con la factura y los productos que nos quedan
<?php
$productos = [
'lechuga' => ['unidades' => 200, 'precio' => 0.90],
'tomates' => ['unidades' => 2000, 'precio' => 2.15],
'cebollas' => ['unidades' => 3200, 'precio' => 0.49],
'fresas' => ['unidades' => 4800, 'precio' => 4.50],
'manzanas' => ['unidades' => 2500, 'precio' => 2.10],
];🎨 CSS para dar estilo a la tienda
Puedes utilizar estas clases CSS para presentar el formulario y la factura.
/* Contenedor de la tienda */
.tienda {
max-width: 550px;
margin: 30px auto;
padding: 25px;
background: #f0fdf4;
border: 1px solid #86efac;
border-radius: 12px;
font-family: Verdana, sans-serif;
color: #14532d;
}
/* Título */
.tienda h2 {
text-align: center;
color: #166534;
}
/* Formulario */
.tienda form {
display: flex;
flex-direction: column;
gap: 12px;
}
.tienda label {
font-weight: bold;
}
.tienda input,
.tienda select {
padding: 10px;
border: 1px solid #86efac;
border-radius: 6px;
font-size: 1rem;
background: white;
color: #222;
}
/* Botón de compra */
.tienda button {
padding: 12px;
background: #16a34a;
color: white;
border: none;
border-radius: 6px;
cursor: pointer;
font-weight: bold;
}
.tienda button:hover {
background: #15803d;
}
/* Factura */
.factura {
margin-top: 20px;
padding: 15px;
background: white;
border: 1px solid #bbf7d0;
border-radius: 8px;
color: #222;
}
/* Mensajes */
.error {
color: #b91c1c;
font-weight: bold;
}
.exito {
color: #15803d;
font-weight: bold;
}
.form-group{
display: flex;
justify-content: space-between;
align-items: center;
gap: 20px;
margin-bottom: 12px;
}
.informes {
display: flex;
justify-content: center;
align-items: flex-start;
gap: 24px;
margin-top: 24px;
}
.informes .factura {
min-width: 250px;
}Crea una aplicación que permita identificar a los usuarios y contar sus accesos.
- Muestra un formulario para introducir el nombre de usuario.
- Utiliza un array asociativo cuya clave sea el nombre y cuyo valor sea el número de accesos.
- Cada vez que el usuario pulse el botón, incrementa su contador.
- Muestra los usuarios y sus accesos acumulados.
Condición: conserva los contadores entre envíos del formulario.
Disponemos de un array multidimensional $artistas que contiene información de artistas musicales y sus canciones.
- Analiza la estructura del array, identificando sus claves, valores y niveles.
- Explica qué partes son arrays indexados y cuáles son asociativos.
- Recorre el array mostrando el nombre y las décadas de cada artista.
- Muestra debajo de cada artista los títulos de sus canciones y sus enlaces.
- Utiliza CSS para diferenciar visualmente los artistas y sus canciones.
Datos: utiliza el array $artistas proporcionado con el ejercicio.
Utiliza el fichero JSON de canales de televisión disponible en:
https://github.com/MAlejandroR/json_tv
- Descarga el contenido de
tv.jsonutilizandofile_get_contents(). - Convierte el JSON en un array asociativo con
json_decode(). - Analiza su estructura y recórrelo con
foreach. - Muestra los canales de televisión, incluyendo su nombre y logotipo.
URL del fichero:
$url = "https://raw.githubusercontent.com/MAlejandroR/json_tv/main/tv.json";