O Poder da Função array_chunk do PHP
A linguagem PHP possui uma vasta coleção de funções integradas. Uma delas é array_chunk, que divide arrays em partes menores de tamanho fixo.
PHP possui uma grande coleção de funções integradas para arrays, e array_chunk() é uma das mais úteis para trabalhar com grandes conjuntos de dados. Ela divide um único array em uma série de arrays menores ("chunks") de tamanho fixo, o que facilita a paginação, o processamento em lotes e a organização dos dados. Este capítulo explica a sintaxe, percorre exemplos executáveis, abrange o parâmetro preserve_keys e aponta as armadilhas mais comuns.
O que é a Função array_chunk?
A função array_chunk() divide um array em arrays menores, cada um contendo um número especificado de elementos. É útil sempre que você precisa dividir uma lista longa em grupos de tamanho uniforme — por exemplo, renderizar uma grade de N colunas, processar registros em lotes ou construir saída paginada.
Sintaxe
array_chunk(array $array, int $length, bool $preserve_keys = false): array| Parâmetro | Descrição |
|---|---|
$array | O array a ser dividido. |
$length | O tamanho de cada chunk. Deve ser 1 ou maior; caso contrário, array_chunk() lança um ValueError (PHP 8+) / emite um aviso (PHP 7). |
$preserve_keys | Opcional. false (padrão) reindexa cada chunk a partir de 0; true mantém as chaves originais. |
Valor de retorno: um novo array multidimensional. O array original nunca é modificado — array_chunk() não opera no lugar.
Como Funciona o array_chunk?
array_chunk() percorre o array de entrada em ordem e copia os elementos para um novo sub-array até atingir $length elementos, então inicia um novo chunk. O chunk final contém o que sobrar, portanto pode ser menor que os demais.
Por padrão, o terceiro parâmetro, preserve_keys, é false, o que reindexa as chaves em cada chunk a partir de 0. Definindo-o como true, as chaves originais do array são preservadas — importante quando essas chaves carregam significado (como chaves string ou IDs não sequenciais).
Por exemplo, considere o seguinte array:
PHP define an array
Se chamarmos array_chunk neste array, passando o valor 3 para o segundo argumento, obtemos o seguinte resultado:
Array
(
[0] => Array
(
[0] => a
[1] => b
[2] => c
)
[1] => Array
(
[0] => d
[1] => e
[2] => f
)
[2] => Array
(
[0] => g
)
)Como pode ser visto, o array original foi dividido em três arrays menores, cada um contendo três elementos (com exceção do último array, que contém apenas um).
Preservando as Chaves Originais
Por padrão, cada chunk é reindexado a partir de 0. Passe true como terceiro argumento para manter as chaves originais:
<?php
$data = array("id10" => "a", "id20" => "b", "id30" => "c");
print_r(array_chunk($data, 2, true));
?>Saída:
Array
(
[0] => Array
(
[id10] => a
[id20] => b
)
[1] => Array
(
[id30] => c
)
)Mantenha preserve_keys definido como true sempre que as chaves identificarem os dados (chaves string, IDs de banco de dados, etc.); caso contrário, elas serão perdidas na próxima reindexação.
Por que Usar array_chunk?
A função array_chunk é extremamente útil para diversas aplicações, incluindo:
- Dividir arrays grandes em partes menores e mais gerenciáveis para processamento.
- Exibir grandes quantidades de dados de forma paginada (por exemplo, dividir um array de resultados em arrays menores para exibição em várias páginas).
- Melhorar o desempenho de algoritmos que operam em arrays, reduzindo o tamanho dos arrays processados em um determinado momento.
Exemplo de Uso: Paginação
Um dos casos de uso mais comuns da função array_chunk é a paginação. Considere o seguinte exemplo, onde temos um array de 12 resultados que queremos exibir em 2 páginas:
Example of php array_chunk function
array_chunk() divide os 12 resultados em 2 páginas: o primeiro chunk contém 10 elementos e o segundo contém os 2 restantes. Cada chunk corresponde diretamente a uma página, portanto você pode renderizar $pages[0] para a página 1, $pages[1] para a página 2 e usar count($pages) para construir os links de navegação.
Armadilhas Comuns
$lengthdeve ser pelo menos 1. Um valor de0ou um número negativo lança umValueErrorno PHP 8 e gerava um aviso no PHP 7.- O array original não é alterado.
array_chunk()retorna um novo array; atribua o resultado e não espere que ele modifique a entrada. - A ordem é preservada, as chaves não (por padrão). Os elementos permanecem na ordem original, mas as chaves numéricas são redefinidas para
0..n, a menos que você passepreserve_keys = true. - O último chunk pode ser menor. Sempre trate um chunk final menor que
$lengthao iterar.
Funções Relacionadas
- array_slice() — extrai uma única porção contígua de um array em vez de dividir o todo.
- array_splice() — remove ou substitui uma porção de um array no lugar.
- array_merge() — combina vários arrays de volta em um só.
- array_map() — aplica um callback a cada chunk após a divisão.
- PHP Arrays — uma revisão sobre arrays indexados e associativos.
Conclusão
A função array_chunk() é uma maneira simples e eficaz de dividir um array grande em partes menores e de tamanho uniforme. Seja para paginar resultados, processar registros em lotes ou organizar uma grade, ela mantém o tratamento de arrays legível e previsível. Lembre-se das duas regras que costumam confundir: o tamanho do chunk deve ser pelo menos 1, e as chaves são reindexadas a menos que você solicite a preservação delas.