Como dividir um array em grupos menores - PHP



Neste tutorial mostraremos como dividir uma array em partes menores utilizando apenas uma função nativa do PHP. A função array_chunk() divide um array em partes de "n" elementos, sendo que a última parte poderá conter menos elementos que as demais. Veremos a seguir alguns exemplos que ajudarão entender melhor essa função um pouco desconhecida entre os programadores em PHP.

Array é um tipo de dados do PHP que pode receber mais de um elemento ao mesmo tempo, de tal forma que cada um dos elementos pode ser identificado por uma chave (índice). Portanto, esta estrutura de dados é também conhecida como variável indexada, vetor ou matriz. Leia: Como declarar, atribuir e acessar elementos de um Array em PHP.

1. Dividindo um array numérico

1.1. Neste exemplo vamos dividir um array numérico em grupos de 2 elementos cada, utilizando a função array_chunk().

1.1.1. Array numérico é quando possui suas chaves de índice representadas de forma numérica por via de uma sequência gerada automaticamente a partir de zero.

1.1.2. A função array_chunk() divide um array em partes, retornando um array multidimensional numericamente indexado a partir de zero, de acordo com a sintaxe abaixo:

Sintaxe:

array_chunk(array, size, preserve_key) 

Parâmetros:

Parâmetro

Descrição
 array

 Obrigatório. Especifica o array que será dividido.

 size  Obrigatório. Número inteiro que definirá a quantidade de elementos para cada parte do array.
 preserve_ key

 Opcional.  Se true, preserva os valores das chaves originais.

                   Se false, reindexa as chaves de cada parte (default).

1.2. Portanto, a função array_chunk() irá retornar um array multidimensional contendo as partes divididas do array original. Veja nosso primeiro exemplo onde dividimos um array numérico em grupos de 2 elementos cada:

<?php
	$letras = array('a', 'b', 'c', 'd', 'e');
    
    echo '<pre>';
    echo '<h2>Reindexado - default</h2>';
    print_r(array_chunk($letras, 2));
    
    echo '<h2>Mantendo indexação original - true</h2>';
    print_r(array_chunk($letras, 2, true));

😀 Para melhor entendimento do código, faça o teste no aplicativo PHP Squids Editor. Clique no botão [Run] para visualizar o resultado.

1.3. Veja o resultado:

Observações:

1.3.1. Como já mencionamos no início do tutorial, a última parte da divisão pode ter menos elementos que os demais. Observe no nosso exemplo que a última parte da divisão possui apenas um elemento e não 2 como foi definido, totalizando portanto, todos os 5 elementos que fazem parte do array original.

1.3.2. Observe também que quando utilizamos o parâmetro true, as partes que foram divididas conservam as chaves (índices) do array original. Já sem o parâmetro true (default) ou com o parâmetro false, as partes divididas são reindexadas a partir de zero.

2. Acessando elementos da divisão de um array numérico

2.1. O array resultante da função array_chunk() é um array multidimensional e deve ser tratado como tal. No exemplo a seguir, vamos fazer a leitura dos elementos de um array resultante da função array_chunk():

<?php
    $letras = array('a', 'b', 'c', 'd', 'e');
    
    $grupoLetras = array_chunk($letras, 2);
    
    $n = 0;
    foreach ($grupoLetras as $grupo) {
        $n++;
    	echo "<h3>Grupo {$n}</h3>";
        foreach($grupo as $item) {
        	echo $item.'<br/>';
        }
    }
    
    echo '<hr/>';
    $letraUmGrupoDois = $grupoLetras[1][0];
    echo "A primeira letra do grupo 2 é ".$letraUmGrupoDois; 

😀 Para melhor entendimento do código, faça o teste no aplicativo PHP Squids Editor. Clique no botão [Run] para visualizar o resultado.

2.2. Veja o resultado:

3. Dividindo um array associativo

3.1. Neste exemplo, usando a função array_chunk(), vamos dividir um array associativo em grupos de 2 elementos cada, da mesma forma que no nosso primeiro exemplo.

3.1.1. Arrays associativos são arrays que podemos definir quais são as suas chaves de índice, que podem ser constituídas por uma string ou um valor inteiro.

<?php
    $letras = array(
    	'letra A' => 'a',
        'letra B' => 'b', 
        'letra C' => 'c', 
        'letra D' => 'd', 
        'letra E' => 'e'
    );
    
    echo '<pre>';
    echo '<h2>Reindexado - default</h2>';
    print_r(array_chunk($letras, 2));
    
    echo '<h2>Mantendo indexação original - true</h2>';
    print_r(array_chunk($letras, 2, true));
 
 
 

😀 Para melhor entendimento do código, faça o teste no aplicativo PHP Squids Editor. Clique no botão [Run] para visualizar o resultado.

3.2. Veja o resultado:

Observações:

3.2.1. Observe que ao usarmos o parâmetro true, as partes que foram divididas irão manter as chaves de índice do array original, o que faz todo o sentido se queremos dividir uma array associativo em grupos menores.

4. Dividindo um array multidimensional

4.1. Neste exemplo, como nos exemplos anteriores, vamos usar a função array_chunk() para dividir um array multidimensional em grupos de 2 elementos cada.

4.1.1. Arrays multidimensionais são arrays que podemos adicionar outros arrays dentro dele, de tal forma, que sua estrutura tenha várias dimensões. Em um array multidimensional podemos adicionar quantos arrays numéricos ou associativos desejarmos. Também podemos adicionar outros arrays dentro deles, e assim sucessivamente.

<?php
    $carros = array(
    	array('marca' => 'Ford', 'modelo' => 'ka', 'ano' => 2018),
        array('marca' => 'GM', 'modelo' => 'corsa', 'ano' => 2012),
        array('marca' => 'Fiat', 'modelo' => 'punto', 'ano' => 2015),
        array('marca' => 'Toyota', 'modelo' => 'corola', 'ano' => 2020), 
        array('marca' => 'Honda', 'modelo' => 'civic', 'ano' => 2019)
    );
    
    echo '<pre>';
    echo '<h2>Reindexado - default</h2>';
    print_r(array_chunk($carros, 2));
    
    echo '<h2>Mantendo indexação original - true</h2>';
    print_r(array_chunk($carros, 2, true));    
 
 

😀 Para melhor entendimento do código, faça o teste no aplicativo PHP Squids Editor. Clique no botão [Run] para visualizar o resultado.

 4.2. Veja o resultado:

 

4.2.1. Observe que neste exemplo, o parâmetro true mantêm a indexação do array original sem que haja qualquer alteração nas chaves de índices dos arrays inseridos. Já sem o parâmetro true, mesmo com a reindexação, mantemos também as chaves de índices dos arrays inseridos que fazem da estrutura dimensional.

5. Acessando elementos da divisão de um array multidimensional

5.1. No exemplo a seguir, vamos fazer a leitura dos elementos de um array resultante da função array_chunk() de um array multidimensional:

<?php
    $carros = array(
    	array('marca' => 'Ford', 'modelo' => 'ka', 'ano' => 2018),
        array('marca' => 'GM', 'modelo' => 'corsa', 'ano' => 2012),
        array('marca' => 'Fiat', 'modelo' => 'punto', 'ano' => 2015),
        array('marca' => 'Toyota', 'modelo' => 'corola', 'ano' => 2020), 
        array('marca' => 'Honda', 'modelo' => 'civic', 'ano' => 2019)
    );
    
    $grupoCarros = array_chunk($carros, 2, true);
    
    $n = 0;
    foreach ($grupoCarros as $grupo) {
        $n++;
    	echo "<h4>Grupo {$n}</h4>";
        foreach($grupo as $item) {
        	echo $item['marca'].' - ';
            echo $item['modelo'].' / ';
            echo $item['ano'].'<br/>';                        
        }
    }
    
    echo '<br/><hr/><br/>';
    $modeloCarroDoisGrupo2 = $grupoCarros[1][3]['modelo'];
    $anoCarroUmGrupo3 = $grupoCarros[2][4]['ano'];
    echo "O modelo do segundo carro do grupo dois é: ".$modeloCarroDoisGrupo2;  
    echo '<br/>';
    echo "O ano do primeiro carro do grupo três é: ".$anoCarroUmGrupo3;     

😀 Para melhor entendimento do código, faça o teste no aplicativo PHP Squids Editor. Clique no botão [Run] para visualizar o resultado. 

 

5.2. Veja o resultado: 

5.2.1. Observe que neste exemplo usamos o parâmetro true na função array_chunk(). Desta forma, foram mantidos os índices do array original e portanto, para acessarmos seus elementos os mesmos devem ser mantidos. Assim, por exemplo, $grupoCarros[1][3]['modelo'] vamos obter o quarto item do array original, que é "corola", lembrando que a indexação numérica sempre começa com zero. Leia também: Como declarar, atribuir e acessar elementos de um Array em PHP.

Documentação Oficial

1. [Documentação PHP - Função array_chunk()] » Sobre a função array_chunck().

O anúncio abaixo ajuda manter o Portal Visual Dicas

Comentários

×

Infomações do site / SEO