W3docs

Função PHP array_slice: um guia completo

Aprenda a usar PHP array_slice() para extrair parte de um array por offset e comprimento, com índices negativos, preservação de chaves e exemplos práticos.

array_slice() extrai uma parte de um array PHP e a retorna como um novo array, deixando o original intacto. É a ferramenta ideal para situações como "preciso dos elementos 5 a 10", os primeiros ou últimos N itens, ou uma página de resultados. Este guia aborda a assinatura da função, o comportamento dos argumentos $offset, $length e $preserve_keys (incluindo valores negativos), a peculiaridade em torno das chaves numéricas e vários padrões práticos.

O que é a função PHP array_slice?

A função array_slice é uma função PHP nativa que permite extrair um trecho de um array com base em um índice inicial e um comprimento. A sintaxe da função é a seguinte:

Sintaxe da função PHP array_slice

array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )
  • $array — o array a ser fatiado. É passado por valor, portanto o array original nunca é modificado.
  • $offset — o índice inicial do trecho. Se positivo, o trecho começa tantos elementos a partir do início. Se negativo, começa tantos elementos a partir do final do array (-2 significa "começar no penúltimo elemento").
  • $length (opcional) — quantos elementos incluir. Se omitido ou null, o trecho vai até o final do array. Se negativo, o trecho para tantos elementos antes do final. Se maior que os elementos restantes, você simplesmente obtém o que restar.
  • $preserve_keys (opcional, padrão false) — veja a nota sobre preservação de chaves abaixo.

A função retorna um novo array contendo os elementos selecionados; o original permanece intacto.

Offset e length negativos

Valores negativos contam a partir do final, o que torna trivial obter "os últimos N itens" e "tudo exceto o último item":

PHP array_slice com offset e length 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 )
?>

Como as chaves são tratadas

Por padrão, array_slice() reindexa as chaves numéricas a partir de 0, mas sempre preserva as chaves string (associativas). Defina o quarto argumento como true quando precisar que as chaves numéricas originais sejam mantidas:

Preservação de chaves com PHP array_slice

<?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 )
?>

O exemplo de sintaxe anterior mostra $preserve_keys = true combinado com um offset negativo:

PHP array_slice com chaves preservadas e offset 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 )
?>

Como usar a função PHP array_slice?

Usar a função array_slice é muito simples. Veja um exemplo que demonstra como extrair um trecho de um array, começando pelo terceiro elemento e incluindo os dois próximos:

Como usar a função PHP array_slice

php— editable, runs on the server

Como pode ser visto, o trecho resultante contém os elementos "cherry" e "date", que são os dois elementos a partir do terceiro elemento do array original.

Exemplos práticos de uso da função PHP array_slice

Agora que você sabe como usar a função array_slice, vejamos alguns exemplos práticos de sua utilização.

Paginando resultados

Se você está trabalhando com um conjunto de dados grande, como uma lista de produtos ou posts de blog, pode querer exibir os resultados de forma paginada para não sobrecarregar o usuário com muita informação de uma vez. A função array_slice pode ser muito útil nesse contexto, pois permite extrair um trecho do conjunto de dados com base no número da página atual e na quantidade de itens por página. Veja um exemplo que demonstra como fazer isso:

PHP paginando resultados com a função 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);

?>

Removendo elementos de um array

Se você tem um array que contém elementos que deseja remover, pode combinar array_slice() com array_merge() para construir um novo array que os exclua. (Se preferir remover elementos no local e modificar o array original, use array_splice().) Veja um exemplo:

PHP usando array_slice em combinação com a função array_merge

php— editable, runs on the server

Reordenando elementos em um array

Se você tem um array que contém elementos que deseja reordenar, pode usar a função array_slice em combinação com a função array_merge para criar um novo array que inclua os elementos na ordem desejada. Veja um exemplo que demonstra como fazer isso:

PHP reordenando elementos em um array

php— editable, runs on the server

Como pode ser visto, o array resultante contém os mesmos elementos do array original, mas em uma ordem diferente.

Conclusão

array_slice() extrai parte de um array sem modificar o original, tornando-o ideal para paginação, obtenção dos primeiros ou últimos N itens e criação de cópias reordenadas. Lembre-se dos dois comportamentos principais: $offset/$length negativos contam a partir do final, e as chaves numéricas são reindexadas a menos que você passe $preserve_keys = true.

Para ir além, veja array_splice() para remoção/substituição no local, array_merge() para reunir trechos, e a visão geral de arrays PHP para uma revisão de como arrays e chaves funcionam.

Prática

Prática
O que a função array_slice() em PHP faz?
O que a função array_slice() em PHP faz?
Was this page helpful?