Lección 14 de 75 12 min de lectura

Arrays Indexados

Los arrays son una de las estructuras de datos más importantes en PHP. Un array indexado es una lista ordenada de valores, donde cada elemento tiene un índice numérico que empieza en 0.

Crear arrays

Hay varias formas de crear un array en PHP:

PHP
<?php

// Sintaxis corta (recomendada desde PHP 5.4)
$frutas = ['manzana', 'pera', 'naranja'];

// Sintaxis clásica con array()
$colores = array('rojo', 'verde', 'azul');

// Array vacío
$lista = [];

// Array con diferentes tipos de datos
$mixto = ['texto', 42, 3.14, true, null];

// Mostrar contenido del array
print_r($frutas);
/*
Array
(
    [0] => manzana
    [1] => pera
    [2] => naranja
)
*/
Los índices empiezan en 0

En PHP (y en la mayoría de lenguajes), el primer elemento tiene índice 0, el segundo índice 1, y así sucesivamente.

Acceder a elementos

Usa el índice entre corchetes para acceder a un elemento específico:

PHP
<?php

$frutas = ['manzana', 'pera', 'naranja', 'plátano'];

// Acceder por índice
echo $frutas[0]; // manzana
echo $frutas[2]; // naranja

// Último elemento (conociendo la longitud)
$ultimo = $frutas[count($frutas) - 1];
echo $ultimo; // plátano

// Acceso negativo NO funciona en PHP (a diferencia de Python)
// echo $frutas[-1]; // Warning: Undefined array key -1

// Verificar si existe un índice
if (isset($frutas[5])) {
    echo $frutas[5];
} else {
    echo 'No existe el índice 5';
}

Modificar elementos

PHP
<?php

$frutas = ['manzana', 'pera', 'naranja'];

// Modificar un elemento existente
$frutas[1] = 'uva';
print_r($frutas); // ['manzana', 'uva', 'naranja']

// Asignar a un índice específico (puede crear huecos)
$frutas[5] = 'kiwi';
print_r($frutas);
/*
Array
(
    [0] => manzana
    [1] => uva
    [2] => naranja
    [5] => kiwi      // Índices 3 y 4 no existen
)
*/

Añadir elementos

PHP
<?php

$frutas = ['manzana', 'pera'];

// Añadir al final con []
$frutas[] = 'naranja';
$frutas[] = 'plátano';
print_r($frutas); // ['manzana', 'pera', 'naranja', 'plátano']

// Añadir al final con array_push()
array_push($frutas, 'uva', 'kiwi');
print_r($frutas); // ['manzana', 'pera', 'naranja', 'plátano', 'uva', 'kiwi']

// Añadir al inicio con array_unshift()
array_unshift($frutas, 'fresa');
print_r($frutas); // ['fresa', 'manzana', 'pera', ...]
$array[] vs array_push()

Para añadir un solo elemento, $array[] = $valor es más rápido que array_push(). Usa array_push() cuando necesites añadir múltiples elementos a la vez.

Eliminar elementos

PHP
<?php

$frutas = ['manzana', 'pera', 'naranja', 'plátano', 'uva'];

// Eliminar del final y obtener el valor
$ultimo = array_pop($frutas);
echo $ultimo; // uva
print_r($frutas); // ['manzana', 'pera', 'naranja', 'plátano']

// Eliminar del inicio y obtener el valor
$primero = array_shift($frutas);
echo $primero; // manzana
print_r($frutas); // ['pera', 'naranja', 'plátano']

// Eliminar por índice con unset (NO reordena índices)
$numeros = [10, 20, 30, 40, 50];
unset($numeros[2]);
print_r($numeros);
/*
Array
(
    [0] => 10
    [1] => 20
    [3] => 40  // ¡El índice 2 ya no existe!
    [4] => 50
)
*/

// Reindexar después de unset
$numeros = array_values($numeros);
print_r($numeros); // [10, 20, 40, 50] con índices 0, 1, 2, 3

Recorrer arrays

PHP
<?php

$frutas = ['manzana', 'pera', 'naranja'];

// foreach (la forma más común y recomendada)
foreach ($frutas as $fruta) {
    echo "- $fruta\n";
}

// foreach con índice
foreach ($frutas as $indice => $fruta) {
    echo "$indice: $fruta\n";
}
// 0: manzana
// 1: pera
// 2: naranja

// for tradicional
for ($i = 0; $i < count($frutas); $i++) {
    echo $frutas[$i] . "\n";
}

// for optimizado (guarda count en variable)
$total = count($frutas);
for ($i = 0; $i < $total; $i++) {
    echo $frutas[$i] . "\n";
}

Longitud y verificaciones

PHP
<?php

$frutas = ['manzana', 'pera', 'naranja'];
$vacio = [];

// Contar elementos
echo count($frutas);  // 3
echo sizeof($frutas); // 3 (alias de count)

// Verificar si es un array
var_dump(is_array($frutas)); // bool(true)
var_dump(is_array('texto')); // bool(false)

// Verificar si está vacío
if (empty($vacio)) {
    echo 'El array está vacío';
}

// Forma alternativa
if (count($vacio) === 0) {
    echo 'El array está vacío';
}

// Verificar si un valor existe en el array
if (in_array('pera', $frutas)) {
    echo 'Encontrado';
}

// in_array con comparación estricta
$numeros = [1, 2, 3];
var_dump(in_array('1', $numeros));       // true (comparación débil)
var_dump(in_array('1', $numeros, true)); // false (comparación estricta)

Buscar en arrays

PHP
<?php

$frutas = ['manzana', 'pera', 'naranja', 'pera'];

// Buscar índice de un valor
$indice = array_search('naranja', $frutas);
echo $indice; // 2

// array_search devuelve false si no encuentra
$resultado = array_search('kiwi', $frutas);
if ($resultado === false) {
    echo 'No encontrado';
}

// ¡Cuidado! Usa === para comparar con false
$indice = array_search('manzana', $frutas); // Devuelve 0
if ($indice == false) {
    // ¡ERROR! 0 == false es true
}
if ($indice === false) {
    // CORRECTO: 0 === false es false
}

// Encontrar todas las ocurrencias
$indices = array_keys($frutas, 'pera');
print_r($indices); // [1, 3]
Siempre usa === con array_search

array_search() devuelve false si no encuentra el valor, pero puede devolver 0 si lo encuentra en el primer índice. Como 0 == false es true, debes usar ===.

Ejemplos prácticos

PHP
<?php

// Lista de tareas
$tareas = [];

// Añadir tareas
$tareas[] = 'Comprar leche';
$tareas[] = 'Llamar al médico';
$tareas[] = 'Enviar informe';

// Mostrar tareas pendientes
echo "Tareas pendientes:\n";
foreach ($tareas as $i => $tarea) {
    echo ($i + 1) . ". $tarea\n";
}

// Completar una tarea (eliminar)
$completada = array_shift($tareas);
echo "\nCompletada: $completada\n";

// Sumar elementos de un array
$precios = [19.99, 29.99, 9.99, 49.99];
$total = 0;

foreach ($precios as $precio) {
    $total += $precio;
}

echo "Total: $total\n"; // 109.96

// Forma más elegante
$total = array_sum($precios);
echo "Total: $total\n"; // 109.96

// Crear array de números
$numeros = range(1, 10);
print_r($numeros); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

// Crear array de letras
$letras = range('a', 'f');
print_r($letras); // ['a', 'b', 'c', 'd', 'e', 'f']

Ejercicios

Ejercicio 1: Crear y recorrer un array

Crea un array con los nombres de 4 colores. Luego recorre el array con foreach e imprime cada color en una linea.

Ver solucion
<?php

declare(strict_types=1);

$colores = ['rojo', 'verde', 'azul', 'amarillo'];

foreach ($colores as $color) {
    echo "$color\n";
}

Ejercicio 2: Sumar elementos de un array

Dado el array $numeros = [10, 25, 8, 42, 15], calcula la suma total usando un bucle foreach (sin usar array_sum).

Ver solucion
<?php

declare(strict_types=1);

$numeros = [10, 25, 8, 42, 15];
$suma = 0;

foreach ($numeros as $numero) {
    $suma += $numero;
}

echo "La suma total es: $suma\n";

Ejercicio 3: Buscar un elemento

Dado el array $frutas = ['manzana', 'pera', 'naranja', 'uva'], busca si existe 'naranja' usando in_array() e imprime un mensaje indicando si se encontro o no.

Ver solucion
<?php

declare(strict_types=1);

$frutas = ['manzana', 'pera', 'naranja', 'uva'];
$buscar = 'naranja';

if (in_array($buscar, $frutas, true)) {
    echo "La fruta '$buscar' esta en el array\n";
} else {
    echo "La fruta '$buscar' no esta en el array\n";
}

¿Te está gustando el curso?

Tenemos cursos premium con proyectos reales y soporte personalizado.

Descubrir cursos premium