W3docs

Función PHP array_slice: una guía completa

Aprende a usar PHP array_slice() para extraer parte de un array por desplazamiento y longitud, con índices negativos, preservación de claves y ejemplos prácticos.

array_slice() extrae una porción de un array de PHP y la devuelve como un nuevo array, sin modificar el original. Es la herramienta indicada cuando necesitas "dame los elementos del 5 al 10", los primeros o últimos N elementos, o una página de resultados. Esta guía cubre la firma de la función, cómo se comportan los argumentos $offset, $length y $preserve_keys (incluidos los valores negativos), el comportamiento especial con las claves numéricas y varios patrones prácticos.

¿Qué es la función PHP array_slice?

La función array_slice es una función integrada de PHP que permite extraer un fragmento de un array a partir de un índice de inicio y una longitud. La sintaxis de la función es la siguiente:

Sintaxis de la función PHP array_slice

array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )
  • $array — el array a segmentar. Se pasa por valor, por lo que el array original nunca se modifica.
  • $offset — el índice de inicio del segmento. Si es positivo, el segmento comienza esa cantidad de elementos desde el principio. Si es negativo, comienza esa cantidad de elementos desde el final del array (-2 significa "comenzar en el penúltimo elemento").
  • $length (opcional) — cuántos elementos tomar. Si se omite o es null, el segmento se extiende hasta el final del array. Si es negativo, el segmento se detiene esa cantidad de elementos antes del final. Si es mayor que los elementos restantes, simplemente obtienes lo que queda.
  • $preserve_keys (opcional, valor por defecto false) — consulta la nota sobre preservación de claves más adelante.

La función devuelve un nuevo array con los elementos seleccionados; el original se mantiene intacto.

Desplazamiento y longitud negativos

Los valores negativos cuentan desde el final, lo que hace que "los últimos N elementos" y "todo excepto el último elemento" sean triviales:

PHP array_slice con desplazamiento y longitud negativos

<?php
$letters = array("a", "b", "c", "d", "e");

print_r(array_slice($letters, -2));    // last 2: Array ( [0] => d [1] => e )
print_r(array_slice($letters, 1, -1)); // skip first and last: Array ( [0] => b [1] => c [2] => d )
?>

Cómo se gestionan las claves

Por defecto, array_slice() reindexa las claves numéricas comenzando desde 0, pero siempre conserva las claves string (asociativas). Establece el cuarto argumento en true cuando necesites que las claves numéricas originales se mantengan:

PHP array_slice preservación de claves

<?php
$num = array(10 => "x", 20 => "y", 30 => "z");

print_r(array_slice($num, 1));             // reindexed: Array ( [0] => y [1] => z )
print_r(array_slice($num, 1, null, true)); // kept:      Array ( [20] => y [30] => z )
?>

El ejemplo de sintaxis anterior muestra $preserve_keys = true combinado con un desplazamiento negativo:

PHP array_slice con claves preservadas y desplazamiento negativo

<?php
$assoc = array("a" => 1, "b" => 2, "c" => 3, "d" => 4);
$slice = array_slice($assoc, -2, 2, true);
print_r($slice); // Output: Array ( [c] => 3 [d] => 4 )
?>

¿Cómo usar la función PHP array_slice?

Usar la función array_slice es muy sencillo. A continuación se muestra un ejemplo que demuestra cómo extraer un segmento de un array comenzando desde el tercer elemento e incluyendo los dos elementos siguientes:

Cómo usar la función PHP array_slice

php— editable, runs on the server

Como puedes ver, el segmento resultante contiene los elementos "cherry" y "date", que son los dos elementos a partir del tercer elemento del array original.

Ejemplos prácticos del uso de la función PHP array_slice

Ahora que sabes cómo usar la función array_slice, veamos algunos ejemplos prácticos de su uso.

Paginación de resultados

Si trabajas con un conjunto de datos grande, como una lista de productos o entradas de blog, es posible que quieras mostrar los resultados de forma paginada para evitar abrumar al usuario con demasiada información a la vez. La función array_slice puede ser muy útil en este contexto, ya que permite extraer un segmento del conjunto de datos según el número de página actual y la cantidad de elementos por página. A continuación se muestra un ejemplo:

PHP Paginación de resultados con la función array_slice

<?php

$dataset = range(1, 100); // Simulated dataset
$page = $_GET["page"] ?? 1; // Default to page 1 if not set
$itemsPerPage = 10;
$startIndex = ($page - 1) * $itemsPerPage;
$slice = array_slice($dataset, $startIndex, $itemsPerPage);

?>

Eliminar elementos de un array

Si tienes un array con elementos que deseas eliminar, puedes combinar array_slice() con array_merge() para construir un nuevo array que los excluya. (Si prefieres eliminar elementos en el lugar y modificar el array original, usa array_splice() en su lugar). A continuación se muestra un ejemplo:

PHP uso de la función array_slice en combinación con la función array_merge

php— editable, runs on the server

Reordenar elementos en un array

Si tienes un array con elementos que deseas reordenar, puedes usar la función array_slice en combinación con la función array_merge para crear un nuevo array que incluya los elementos en el orden deseado. A continuación se muestra un ejemplo:

PHP Reordenar elementos en un array

php— editable, runs on the server

Como puedes ver, el array resultante contiene los mismos elementos que el array original, pero en un orden diferente.

Conclusión

array_slice() extrae parte de un array sin modificar el original, lo que lo hace ideal para la paginación, obtener los primeros o últimos N elementos y construir copias reordenadas. Recuerda los dos comportamientos clave: los valores negativos de $offset/$length cuentan desde el final, y las claves numéricas se reindexan a menos que pases $preserve_keys = true.

Para profundizar más, consulta array_splice() para la eliminación/sustitución en el lugar, array_merge() para unir segmentos, y la descripción general de arrays de PHP para repasar cómo funcionan los arrays y las claves.

Práctica

Práctica
¿Qué hace la función array_slice() en PHP?
¿Qué hace la función array_slice() en PHP?
Was this page helpful?