Dans PHP, la fonction Array_Chunk () est utilisée pour diviser un tableau en plusieurs tableaux plus petits. Lorsque Array_Chunk () est appelé, le deuxième paramètre détermine le nombre d'éléments pour chaque petit tableau. Si nous voulons ajuster dynamiquement ce deuxième paramètre en fonction de la longueur du tableau d'origine, que devons-nous faire?
Cet article présentera comment définir dynamiquement le deuxième paramètre de Array_Chunk () en fonction de la longueur du tableau.
La syntaxe de base de array_chunk () est la suivante:
array_chunk(array $array, int $size, bool $preserve_keys = false): array
$ tableau : le tableau d'entrée.
$ Taille : la taille de chaque tableau fendu.
$ Preserve_keys : s'il faut préserver les clés du tableau d'origine (la valeur par défaut est fausse ).
Par exemple:
$array = [1, 2, 3, 4, 5, 6];
$chunked = array_chunk($array, 2);
print_r($chunked);
Sortir:
Array
(
[0] => Array
(
[0] => 1
[1] => 2
)
[1] => Array
(
[0] => 3
[1] => 4
)
[2] => Array
(
[0] => 5
[1] => 6
)
)
Parfois, nous voulons déterminer dynamiquement la taille de chaque sous-réseau en fonction de la longueur du tableau. Par exemple, si le tableau est plus long, nous voulons que chaque sous-réseau contienne plus d'éléments; Si le tableau est plus petit, chaque sous-réseau contenant moins d'éléments. Nous pouvons y parvenir de la manière suivante:
function dynamicChunkSize($array) {
// Obtenez la longueur du tableau
$length = count($array);
// Réglez la taille de section en fonction de la longueur du tableau,Supposons que la longueur est inférieure à 10 Division du temps 2 morceau,Longueur supérieure à 10 Division du temps 3 morceau
if ($length < 10) {
$size = 2;
} else {
$size = ceil($length / 3); // 如果数组Longueur supérieure à 10,Il est divisé par un tiers
}
return $size;
}
$array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
$size = dynamicChunkSize($array);
$chunked = array_chunk($array, $size);
print_r($chunked);
Dans l'exemple ci-dessus, nous définissons une fonction dynamicchunkSize () qui détermine dynamiquement la taille de chaque sous-réseau en fonction de la longueur du tableau. Par exemple, si la longueur du tableau est inférieure à 10, nous définissons la taille de chaque petit tableau sur 2; Si la longueur du tableau est supérieure à 10, nous définissons la taille de chaque petit tableau sur un tiers de la longueur du réseau.
L'ajustement dynamiquement du deuxième paramètre de Array_Chunk () est très adapté à certains scénarios spécifiques. Par exemple, lors de l'affichage des données sur la pagination, nous pouvons calculer dynamiquement le nombre de données affiché sur chaque page en fonction de la quantité totale de données. Voici un exemple de pagination:
function getPaginationChunks($array, $totalItems, $itemsPerPage) {
$totalPages = ceil($totalItems / $itemsPerPage);
$chunks = [];
for ($i = 0; $i < $totalPages; $i++) {
$start = $i * $itemsPerPage;
$chunks[] = array_slice($array, $start, $itemsPerPage);
}
return $chunks;
}
$array = range(1, 100); // Supposons que ce soit un inclure100Gamme d'éléments
$totalItems = count($array);
$itemsPerPage = 10;
$pagination = getPaginationChunks($array, $totalItems, $itemsPerPage);
print_r($pagination);
Dans cet exemple, nous avons utilisé array_slice () pour simuler la fonction de pagination. Nous divisons dynamiquement le tableau en fonction de la quantité totale de données et du nombre de bandes de données par page, et renvoyons les données de chaque page.
La définition dynamique du deuxième paramètre de Array_Chunk () peut nous aider à gérer la segmentation du tableau de manière plus flexible, en particulier lors de la gestion des tableaux de pagination ou de division en fonction de certaines règles. En calculant la longueur du tableau et en ajustant dynamiquement la taille de chaque sous-réseau en fonction des conditions, nous pouvons facilement répondre à différents besoins.