Saltar al contenido
Portada » Lenguajes » 7. Arrays en PHP

7. Arrays en PHP

Introducción

Arrays en PHP. En este capítulo nos adentraremos en uno de los tipos de estructuras de datos más esenciales de cualquier leguaje de programación, los arrays. Un array permite almacenar múltiples valores en una sola variable, lo que nos permite gestionar colecciones de datos de forma ordenada y eficiente.

Hasta ahora, hemos trabajado con valores individuales (enteros, cadenas, booleanos, etc.). Pero en muchas situaciones reales, necesitamos manejar conjuntos de datos: listas de nombres, productos, puntuaciones, mensajes, etc. Aquí es donde entran en juego los arrays.

¿Qué aprenderás en este capítulo?

A lo largo de este capítulo, aprenderás:

  • Qué es un array y por qué es útil.
  • Cómo crear arrays indexados, asociativos y multidimensionales.
  • Cómo acceder, modificar, recorrer y eliminar elementos de un array.
  • Cómo utilizar las principales funciones nativas de PHP para trabajar con arrays.
  • Buenas prácticas y consideraciones de rendimiento al utilizar arrays en tus programas.

Veremos ejemplos prácticos que te ayudarán a entender cómo los arrays pueden hacer tu código más organizado, eficiente y modular.

¿Qué es un Array en PHP?

Un array en PHP es una estructura de datos que permite almacenar múltiples valores en una sola variable. Es uno de los recursos más útiles y versátiles del lenguaje, ya que facilita la agrupación, manipulación y organización de grandes volúmenes de datos.

Sintáxis

Los arrays se definen con la siguiente sintáxis:

$nombre_variable = [ ];

Esto crearía un array vacío, pero también se pueden añadir elementos en la definición separándolos por comas.

$nombre_variable = [ valor1, valor2, ...., valorN];

¿Por qué es útil un array?

Imagina que necesitas guardar los nombres de 100 estudiantes. En lugar de crear 100 variables distintas:

$alumno1 = "Carlos";
$alumno2 = "Ana";
$alumno3 = "Lucía";
// ...

// ...
$alumno100 = "Marcos";

Puedes usar un solo array:

$alumnos = ["Carlos", "Ana", "Lucía", /* ... */, "Marcos"];

Esto no solo hace el código más limpio y fácil de mantener, sino que también te permite manipular esos datos con estructuras como bucles, funciones y filtros.

7.1 Tipos de Arrays en PHP

PHP admite tres tipos principales de arrays:

  1. Arrays indexados (numéricos)
  2. Arrays asociativos
  3. Arrays multidimensionales

– Arrays Indexados (o Numéricos)

Son arrays donde cada elemento tiene un índice numérico automático que comienza en 0 por defecto.

Ejemplo:

$frutas = ["Manzana", "Banana", "Naranja"];
echo $frutas[0]; // Salida: Manzana

También puedes crearlo con la función array():

$colores = array("Rojo", "Verde", "Azul");
echo $colores[2]; // Azul

Recorrido con bucle:

Para acceder a todos los elementos de un array, lo más común es crear un bucle for desde 0 al tamaño del array e ir accediendo elemento por elemento para manipularlo.

for ($i = 0; $i < count($frutas); $i++) {
echo $frutas[$i] . PHP_EOL;
}

O con foreach:

phpCopyEditforeach ($frutas as $fruta) {
    echo $fruta . PHP_EOL;
}

– Arrays Asociativos

En este tipo de arrays, los índices no son números, sino nombres (strings). Es como tener una tabla donde la primera columna es la «clave» y la segunda el «valor».

🧪 Ejemplo:

$persona = [
"nombre" => "María",
"edad" => 30,
"ciudad" => "Madrid"
];

echo $persona["nombre"]; // María

Recorrido:

Para recorrer un array asociativo tendremos que relizarlo con la sentencia foreach.

foreach ($persona as $clave => $valor) {
echo "$clave: $valor" . PHP_EOL;
}

– Arrays Multidimensionales

Un array multidimensional es un array en el que cada elemento es otro arrays. Puedes imaginarlo como una tabla con filas y columnas, o como estructuras más complejas, como una matriz.

Ejemplo 1: Tabla de productos

$productos = [
["Camisa", 25, "M"],
["Pantalón", 40, "L"],
["Zapatos", 60, "42"]
];

echo $productos[0][0]; // Camisa
echo $productos[2][2]; // 42

En este caso, al haber dos arrays, un array de filas y otro de columnas, debemos manejar dos índices.

Los arrays multidimensionales no solo se limitan a dos dimensiones, en este caso hemos visto un array de dos dimensiones con filas y columnas como podría ser una hoja de cálculo, pero se puede dar el caso que necesitemos más dimensiones. Imagínate que quieres hacer un cubo de Rubik, en este caso ya estamos gestionado 3 dimensiones. La definición sería así:

$CuboRubik = [][][];
$CuboRubik = [0][0][0] = "Azul";
$CuboRubik = [0][2][2] = "Azul";
$CuboRubik = [1][0][0] = "Verde";
...
...

Un array de 3 índices también nos podría servir para representar un espacio vectorial de 3 dimensiones. Pero podríamos tener otros arrays con manyor número de índices (4, 5, ….), aunque eso es para casos muy específicos y que se hacen bastante complejos de manejar.

Ejemplo 2: Array asociativo dentro de otro

$usuarios = [
[
"nombre" => "Luis",
"email" => "luis@mail.com"
],
[
"nombre" => "Ana",
"email" => "ana@mail.com"
]
];

echo $usuarios[1]["email"]; // ana@mail.com

Recorrido con bucles anidados:

Para poder recorrer arrays que están dentro de otros arrays necesitaremos crear bucles for dentro de otro bucle for. Cada bucle se encarga de recorrer un índice distinto.

foreach ($usuarios as $usuario) {
foreach ($usuario as $clave => $valor) {
echo "$clave: $valor" . PHP_EOL;
}
echo "-------------------" . PHP_EOL;
}

Consejos generales al usar arrays en PHP

  • Los índices pueden ser numéricos o cadenas de texto, incluso combinados en el mismo array (aunque no es recomendable).
  • Los arrays en PHP son dinámicos: puedes añadir o eliminar elementos en cualquier momento. (Esto es una carácterística de PHP que no comparten otros lenguajes)
  • Existen muchas funciones para manipular arrays: array_push(), array_merge(), array_keys(), array_values(), in_array(), etc.

7.2 Manipulación de Arrays en PHP

PHP proporciona una amplia gama de funciones nativas para trabajar con arrays. A continuación veremos las operaciones más comunes y útiles que puedes aplicar en tus scripts PHP.

Agregar elementos a un array

array_push()

Agrega uno o más elementos al final de un array.

$frutas = ["Manzana", "Pera"];
array_push($frutas, "Plátano", "Kiwi");
print_r($frutas);

Resultado:

Array (
[0] => Manzana
[1] => Pera
[2] => Plátano
[3] => Kiwi
)

También puedes usar la notación:

$frutas[] = "Mango"; // Se agrega al final

Eliminar elementos de un array

unset()

Elimina un elemento específico:

$colores = ["Rojo", "Verde", "Azul"];
unset($colores[1]); // Elimina "Verde"
print_r($colores); // ["Rojo", "Azul"]

Importante: PHP no reordena los índices automáticamente.

array_pop()

Elimina y devuelve el último elemento:

$colores = ["Rojo", "Verde", "Azul"];
$ultimo = array_pop($colores);
echo $ultimo; // Azul

array_shift()

Elimina y devuelve el primer elemento:

$colores = ["Rojo", "Verde", "Azul"];
$primero = array_shift($colores);
echo $primero; // Rojo

Buscar dentro de un array

in_array()

Verifica si un valor existe en un array:

$nombres = ["Luis", "Carlos", "Ana"];
if (in_array("Carlos", $nombres)) {
echo "Carlos está en la lista.";
}

array_search()

Devuelve el índice del valor buscado:

$ciudades = ["Madrid", "Barcelona", "Valencia"];
$indice = array_search("Valencia", $ciudades);
echo $indice; // 2

Contar elementos

count()

Devuelve el número de elementos de un array:


$lenguajes = ["PHP", "Python", "JavaScript"];
echo count($lenguajes); // 3

🔹 Ordenar arrays

sort()

Ordena valores de un array indexado en orden ascendente:

$nombres = ["Carlos", "Ana", "Luis"];
sort($nombres);
print_r($nombres); // ["Ana", "Carlos", "Luis"]

rsort()

Orden descendente.

asort() y arsort()

Ordenan arrays asociativos manteniendo la asociación clave-valor.

$edades = ["Luis" => 30, "Ana" => 25, "Carlos" => 35];
asort($edades); // Por valor ascendente
print_r($edades); // [Ana" => 25, "Carlos" => 35, "Luis" => 30]

ksort() y krsort()

Ordenan por claves:

ksort($edades); // Por nombre (clave)

Combinar y dividir arrays

array_merge()

Combina dos o más arrays:

$a = ["Rojo", "Verde"];
$b = ["Azul", "Amarillo"];
$c = array_merge($a, $b);
print_r($c); // ["Rojo", "Verde", "Azul", "Amarillo"]

array_slice()

Extrae una porción del array:

$frutas = ["Manzana", "Banana", "Kiwi", "Mango"];
$porcion = array_slice($frutas, 1, 2);
print_r($porcion); // ["Banana", "Kiwi"]

array_splice()

Elimina una porción de un array y puede insertar nuevos elementos:

$numeros = [1, 2, 3, 4, 5];
array_splice($numeros, 2, 2, [8, 9]);
print_r($numeros); // [1, 2, 8, 9, 5]

Obtener claves o valores

array_keys() y array_values()

$persona = ["nombre" => "Ana", "edad" => 30];
$claves = array_keys($persona); // ["nombre", "edad"]
$valores = array_values($persona); // ["Ana", 30]

Recorrer arrays

foreach

$colores = ["Rojo", "Verde", "Azul"];
foreach ($colores as $color) {
echo $color . PHP_EOL;
}

Con índice:

foreach ($colores as $indice => $valor) {
echo "$indice: $valor" . PHP_EOL;
}

Filtrar arrays

array_filter()

Permite obtener una parte del array que cumpla una condición:

$numeros = [1, 2, 3, 4, 5, 6];

$pares = array_filter($numeros, function($n) {
return $n % 2 == 0;
});

print_r($pares); // 2, 4, 6

Resumen de Funciones Comunes

En la siguiente tabla mostramos el resumen de las funciones nativas incorporadas para el manejo de arrays.

FunciónDescripción
array_push()Agrega elementos al final
array_pop()Quita el último elemento
array_shift()Quita el primer elemento
in_array()Verifica si existe un valor
array_search()Devuelve índice de un valor
count()Cuenta elementos
sort()/rsort()Ordena arrays indexados
asort()/arsort()Ordena arrays asociativos por valor
ksort()/krsort()Ordena arrays asociativos por clave
array_merge()Une varios arrays
array_slice()Extrae una parte
array_filter()Filtra según una condición

7.3 – Funciones útiles para Arrays en PHP

PHP incluye una gran cantidad de funciones integradas diseñadas específicamente para trabajar con arrays de forma sencilla. En este apartado vamos a repasar algunas de las funciones más útiles, muchas de las cuales te permiten ahorrar tiempo y escribir código más limpio y legible.

array_map(): Aplicar una función a todos los elementos

Permite aplicar una función personalizada o anónima a cada elemento del array y devuelve un nuevo array con los resultados.

Ejemplo: multiplicar todos los valores por 2

$numeros = [1, 2, 3, 4];

$doblados = array_map(function($n) {
return $n * 2;
}, $numeros);

print_r($doblados);

Resultado:

Array (
[0] => 2
[1] => 4
[2] => 6
[3] => 8
)

array_filter(): Filtrar elementos por una condición

Devuelve un array con solo los elementos que cumplen una condición determinada.

Ejemplo: filtrar los números pares

$numeros = [1, 2, 3, 4, 5, 6];

$pares = array_filter($numeros, function($n) {
return $n % 2 === 0;
});

print_r($pares);

Resultado:

Array (
[1] => 2
[3] => 4
[5] => 6
)

Nota: los índices originales se conservan.

array_reduce(): Reducir un array a un solo valor

Permite recorrer un array y reducirlo a un único valor usando una función acumuladora.

Ejemplo: sumar todos los valores

$numeros = [1, 2, 3, 4, 5];

$suma = array_reduce($numeros, function($acumulador, $valor) {
return $acumulador + $valor;
});

echo $suma; // 15

array_unique(): Eliminar elementos duplicados

Devuelve un array sin duplicados.

valores = [1, 2, 2, 3, 4, 4, 5];

$sinDuplicados = array_unique($valores);
print_r($sinDuplicados);

Resultado:

Array (
[0] => 1
[1] => 2
[3] => 3
[4] => 4
[6] => 5
)

array_reverse(): Invertir el orden del array

Devuelve un array con los elementos en orden inverso.

$letras = ['a', 'b', 'c', 'd'];
$invertido = array_reverse($letras);
print_r($invertido);

Resultado:

Array (
[0] => d
[1] => c
[2] => b
[3] => a
)

🔹 array_sum() y array_product(): Sumar o multiplicar todos los valores

phpCopyEdit$numeros = [2, 4, 6];

echo array_sum($numeros);     // 12
echo array_product($numeros); // 48

🔹 array_key_exists(): Verifica si una clave existe

$persona = ["nombre" => "Ana", "edad" => 30];

if (array_key_exists("edad", $persona)) {
echo "La clave 'edad' existe.";
}

array_column(): Extrae una columna de un array multidimensional

Muy útil para trabajar con arrays de objetos o registros tipo base de datos.

Ejemplo:

$usuarios = [
["id" => 1, "nombre" => "Ana"],
["id" => 2, "nombre" => "Carlos"],
["id" => 3, "nombre" => "Luis"]
];

$nombres = array_column($usuarios, "nombre");
print_r($nombres);

Resultado:

Array (
[0] => Ana
[1] => Carlos
[2] => Luis
)

array_combine(): Combinar dos arrays en uno asociativo

El primer array se convierte en las claves, el segundo en los valores.

$claves = ["nombre", "edad"];
$valores = ["Ana", 30];

$asociativo = array_combine($claves, $valores);
print_r($asociativo);

Resultado:

Array (
[nombre] => Ana
[edad] => 30
)

array_diff() y array_intersect(): Diferencias y similitudes

array_diff(): devuelve los valores que están en el primer array pero no en los demás

$a = [1, 2, 3, 4];
$b = [2, 4, 6];

$diferencia = array_diff($a, $b);
print_r($diferencia); // 1 y 3

array_intersect(): devuelve los valores comunes

$interseccion = array_intersect($a, $b);
print_r($interseccion); // 2 y 4

range(): Crear arrays numéricos automáticamente

$numeros = range(1, 5);
print_r($numeros);

Resultado:

Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )

Resumen de funciones útiles para arrays

A continuación te mostramos una tabla a modo de guía de referencia de las funciones vistas.

FunciónDescripción
array_map()Aplica una función a cada elemento
array_filter()Filtra elementos que cumplen una condición
array_reduce()Reduce todos los valores a uno solo
array_unique()Elimina valores duplicados
array_reverse()Invierte el orden de los elementos
array_sum()Suma los elementos
array_product()Multiplica los elementos
array_key_exists()Verifica si existe una clave
array_column()Extrae valores de una columna específica de un array multidimensional
array_combine()Combina dos arrays en uno asociativo
array_diff()Muestra las diferencias entre arrays
array_intersect()Muestra los elementos comunes
range()Genera un array numérico automáticamente

Resumen

En este capítulo hemos explorado los arrays en PHP, una estructura fundamental para almacenar y gestionar colecciones de datos. Vimos los distintos tipos de arrays (indexados, asociativos y multidimensionales), cómo manipularlos, recorrerlos y modificarlos, y aprendimos a utilizar diversas funciones nativas de PHP que facilitan el trabajo con ellos de forma eficiente y flexible.

En el próximo capítulo haremos nos adentraremos en el paradigma de la Programación Orientada a Objetos con PHP.

Pasemos a practicar lo visto en el capítulo con unos ejercicios propuestos.

Ejercicio 1: Array de nombres y saludo personalizado
Enunciado:
Crea un array indexado con 5 nombres de personas. Recorre el array e imprime un saludo personalizado para cada uno.

Código:

<?php
$nombres = ["Ana", "Carlos", "Lucía", "Miguel", "Sofía"];

foreach ($nombres as $nombre) {
    echo "Hola, $nombre!" . PHP_EOL;
}
?>

Explicación:
Se crea un array indexado llamado $nombres que contiene 5 elementos. Luego se utiliza un bucle foreach para recorrer el array y mostrar un mensaje de saludo para cada nombre. La instrucción PHP_EOL agrega un salto de línea al final de cada saludo para organizar la salida.

Ejercicio 2: Calcular promedio de calificaciones
Enunciado:
Crea un array asociativo con los nombres de estudiantes como claves y sus calificaciones como valores. Calcula el promedio general de las calificaciones y muestra el resultado.

Código:

<?php
$calificaciones = [
    "Juan" => 7.5,
    "Marta" => 8.0,
    "Luis" => 6.5,
    "Clara" => 9.0,
    "Pedro" => 7.0
];

$suma = array_sum($calificaciones);
$total = count($calificaciones);
$promedio = $suma / $total;

echo "El promedio de las calificaciones es: $promedio";
?>

Explicación:
Se define un array asociativo donde cada clave es el nombre de un estudiante y cada valor es su calificación. Usamos la función array_sum() para sumar todas las calificaciones y count() para obtener el número total de estudiantes. Luego, se calcula el promedio y se imprime.

Ejercicio 3: Tabla de productos con precios
Enunciado:
Crea un array multidimensional con productos y precios. Luego, imprime una tabla HTML que muestre el nombre y precio de cada producto.

Código:

<?php
$productos = [
    ["nombre" => "Camiseta", "precio" => 15.50],
    ["nombre" => "Pantalón", "precio" => 25.00],
    ["nombre" => "Zapatos", "precio" => 40.75]
];

echo "<table border='1'>";
echo "<tr><th>Producto</th><th>Precio (€)</th></tr>";

foreach ($productos as $producto) {
    echo "<tr>";
    echo "<td>" . $producto["nombre"] . "</td>";
    echo "<td>" . number_format($producto["precio"], 2) . "</td>";
    echo "</tr>";
}

echo "</table>";
?>

Explicación:
Se crea un array multidimensional, donde cada elemento es un array asociativo con dos claves: nombre y precio. Luego, se recorre con un foreach y se imprime una tabla HTML. La función number_format() se utiliza para mostrar los precios con dos decimales, mejorando el formato de salida.

Bibliografía de programación en PHP.

LogoPHP, Arrays en PHP

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *