W3docs

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âmetroDescrição
$arrayO array a ser dividido.
$lengthO 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_keysOpcional. 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

php— editable, runs on the server

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

php— editable, runs on the server

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

  • $length deve ser pelo menos 1. Um valor de 0 ou um número negativo lança um ValueError no 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ê passe preserve_keys = true.
  • O último chunk pode ser menor. Sempre trate um chunk final menor que $length ao 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.

Prática

Prática
Quais das afirmações a seguir sobre a função array_chunk em PHP estão corretas?
Quais das afirmações a seguir sobre a função array_chunk em PHP estão corretas?
Was this page helpful?