✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Bloco de Matriz

18

Usando array chunk (array_chunk) podemos facilmente dividir um array em um array multidimensional (um array de arrays).

A função array chunk pode ser usada para dividir um array em partes menores, talvez para torná-lo mais fácil de processar.

Exemplo básico

Supondo que configuramos um array conforme o exemplo de código abaixo ($arrayna linha 1), podemos fragmentar esse array em um novo array multidimensional usando a array_chunkfunção na linha 9.

A execução desse código resultaria na matriz multidimensional na linha 15.

$array = [
    'Post 0', 
    'Post 1', 
    'Post 2', 
    'Post 3', 
    'Post 4', 
    'Post 5',
];
$chunked_array = array_chunk( $array, 2 );
print_r( $chunked_array ); // Output the new array.

/**
 * Output:
 *
 * Array
 * (*   [0] => Array
 * (*          [0] => Post 0
 *          [1] => Post 1
 *) *   [1] => Array
 * (*          [0] => Post 2
 *          [1] => Post 3
 *) *   [2] => Array
 * (*           [0] => Post 4
 *           [1] => Post 5
 *) *)
 **/

Composição

$chunked_array = array_chunk( $array, $chunk, $preserve_keys );

A array_chunkfunção aceita três parâmetros, $arraye $chunk( $preserve_keysopcional, falso por padrão). Estes são os seguintes:

  1. O $arrayparâmetro aceita um array e é o array inicial que desejamos transformar.
  2. O $chunkaceita um inteiro, e é o número que usamos para dividir $arrayem partes desse valor.
  3. O parâmetro opcional $preserve_keysaceita um booleano e preservará as chaves do array se true.

Recursos e exemplos específicos

Preservar chaves

Explorando o $preserve_keysparâmetro, nosso exemplo anterior inicia o índice de cada array aninhado em 0. No entanto, se passarmos truepara este parâmetro, o índice original do array inicial seria mantido intacto:

$array = [
    'Post 0', 
    'Post 1', 
    'Post 2', 
    'Post 3', 
    'Post 4', 
    'Post 5',
];
$chunked_array = array_chunk( $array, 2, true );
print_r( $chunked_array ); // Output the new array.

/**
 * Output:
 *
 * Array
 * (*   [0] => Array
 * (*          [0] => Post 0
 *          [1] => Post 1
 *) *   [1] => Array
 * (*          [2] => Post 2
 *          [3] => Post 3
 *) *   [2] => Array
 * (*           [4] => Post 4
 *           [5] => Post 5
 *) *)
 **/

Na saída, as chaves agora são sequenciais, como seriam no array original (0, 1, 2, 3…).

Preservar chaves quando a matriz original tiver chaves nomeadas

Se nosso array original tiver chaves nomeadas, podemos preservar as chaves para mantê-las em nosso array em partes.

O exemplo a seguir tem um pouco de diversão com isso. Digamos que temos de alguma forma um array com alguns Post IDs e Post Names misturados.

Poderíamos usar array_chunkcom o $preserve_keysparâmetro definido como truepara dividi-los em postagens individuais.

$array = [
    'id_0'   => '10', 
    'name_0' => 'Post 1', 
    'id_1'   => '20', 
    'name_1' => 'Post 2', 
    'id_2'   => '30', 
    'name_2' => 'Post 3',
];
$chunked_array = array_chunk( $array, 2, true);
print_r( $chunked_array ); 

Ainda nos divertindo com esse array, vamos imaginar como poderíamos fazer um loop pelo $chunked_array, e produzir apenas os nomes.

foreach( $chunked_array as $key => $nested_array) {
    echo $nested_array[ 'name_'. $key ]. PHP_EOL;
}

Chunking uma grande matriz para processamento.

Se tivermos uma matriz muito grande, podemos array_chunkdividi-la em pedaços menores que poderíamos armazenar separadamente. Vamos ver como podemos fazer isso no WordPress:

$original_array = [...]; 
$post_id        = get_the_ID();
$chunked_array  = array_chunk( $original_array, 10, true );

foreach( $chunked_array as $key => $array) {
    update_post_meta( 
        $post_id,
        '_wc_chunked_array_partial_'. $post_id,
        $array
    );
}

Leitura adicional

Para mais leitura você pode verificar o manual do PHP.

Fonte de gravação: wholesomecode.ltd

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação