Morceau de tableau
En utilisant array chunk( array_chunk), nous pouvons facilement diviser un tableau en un tableau multidimensionnel (un tableau de tableaux).
La fonction de bloc de tableau peut être utilisée pour diviser un tableau en parties plus petites, peut-être pour le rendre plus facile à traiter.
Exemple de base
En supposant que nous configurions un tableau conformément à l’exemple de code ci-dessous ($arrayà la ligne 1), nous pouvons fragmenter ce tableau dans un nouveau tableau multidimensionnel à l’aide de la array_chunkfonction à la ligne 9.
L’exécution de ce code entraînerait le tableau multidimensionnel à la ligne 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
*) *)
**/
Composition
$chunked_array = array_chunk( $array, $chunk, $preserve_keys );
La array_chunkfonction accepte trois paramètres, $array, $chunket $preserve_keys(optionnel, faux par défaut). Ceux-ci sont les suivants :
- Le
$arrayparamètre accepte un tableau, et est le tableau initial que nous souhaitons transformer. - Le
$chunkaccepte un nombre entier et est le nombre que nous utilisons pour diviser le$arrayen parties de cette valeur. - Le paramètre facultatif
$preserve_keysaccepte un booléen et conservera les clés du tableau sitrue.
Caractéristiques et exemples spécifiques
Conserver les clés
En explorant le $preserve_keysparamètre, notre exemple précédent commence l’index de chaque tableau imbriqué à 0. Cependant, si nous devions passer truedans ce paramètre, l’index d’origine du tableau initial serait conservé intact :
$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
*) *)
**/
Dans la sortie, les clés sont désormais séquentielles, comme elles le seraient dans le tableau d’origine (0, 1, 2, 3…).
Conserver les clés lorsque le tableau d’origine a des clés nommées
Si notre tableau d’origine a des clés nommées, nous pouvons conserver les clés pour les conserver dans notre tableau fragmenté.
L’exemple suivant s’amuse un peu avec cela. Disons que nous avons en quelque sorte un tableau avec des ID de publication et des noms de publication mélangés.
Nous pourrions utiliser array_chunkle $preserve_keysparamètre défini sur truepour les diviser en messages individuels.
$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 );
Toujours en s’amusant avec ce tableau, imaginons comment nous pourrions parcourir le $chunked_array, et ne sortir que les noms.
foreach( $chunked_array as $key => $nested_array) {
echo $nested_array[ 'name_'. $key ]. PHP_EOL;
}
Blocage d’un grand tableau pour le traitement.
Si nous avons un très grand tableau, nous pouvons l’utiliser array_chunkpour le diviser en petits morceaux que nous pourrions ensuite stocker séparément. Voyons comment nous pourrions faire cela dans 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
);
}
Lectures complémentaires
Pour plus de lecture, vous pouvez consulter le manuel PHP.