Position actuelle: Accueil> Derniers articles> array_chunk évite les données vides dans les blocs lors du fractionnement

array_chunk évite les données vides dans les blocs lors du fractionnement

M66 2025-04-26

Dans la programmation PHP, Array_Chunk () est une fonction très pratique qui est utilisée pour diviser un grand tableau en plusieurs petits tableaux (blocs). Cette fonction a deux paramètres, le premier est le tableau d'origine, et le second est la taille de chaque bloc. Bien que cette fonction soit très pratique, il produit parfois des blocs contenant des valeurs nulles, ce qui n'est pas idéal pour certains scénarios d'application. Alors, comment éviter Array_Chunk () générant des blocs vides lors de la division des tableaux? Ci-dessous, nous discuterons de certaines solutions courantes.

Utilisation de base

Tout d'abord, jetons un coup d'œil à l'utilisation de base de la fonction array_chunk () . Supposons que nous ayons un tableau simple et que nous voulions le diviser en morceaux de taille 3:

 <?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$result = array_chunk($arr, 3);
print_r($result);
?>

Le résultat de sortie est le suivant:

 Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

    [1] => Array
        (
            [0] => 4
            [1] => 5
            [2] => 6
        )

    [2] => Array
        (
            [0] => 7
            [1] => 8
            [2] => 9
        )
)

Le code ci-dessus divise avec succès le tableau d'origine en plusieurs blocs de taille 3.

Problème: génération de blocs vides

array_chunk () divisera le tableau en fonction de la taille du bloc spécifiée. Cependant, lorsque la taille du tableau ne peut pas être complètement divisible par la taille du bloc, le dernier bloc peut contenir moins que le nombre d'éléments spécifié, ou même par un bloc vide. Si vous souhaitez éviter les blocs vides, vous pouvez utiliser les méthodes suivantes pour optimiser.

Solution: filtrez les blocs vides

Pour éviter les blocs vides, nous pouvons utiliser la fonction array_filter () pour filtrer tous les blocs vides après avoir divisé le tableau. Voici un exemple de la façon d'y parvenir:

 <?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8];
$chunked = array_chunk($arr, 3);

// utiliser array_filter() Filtrez les blocs vides
$chunked = array_filter($chunked, function($chunk) {
    return !empty($chunk);
});

print_r($chunked);
?>

Le résultat de sortie est le suivant:

 Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

    [1] => Array
        (
            [0] => 4
            [1] => 5
            [2] => 6
        )

    [2] => Array
        (
            [0] => 7
            [1] => 8
        )
)

En utilisant array_filter (), nous pouvons supprimer des blocs contenant des éléments vides afin qu'aucun bloc vide n'apparaisse.

Une autre façon: redimensionner le tableau

Si vous ne souhaitez pas filtrer les blocs vides, envisagez d'ajuster la taille du bloc utilisée lors du fractionnement du tableau. Par exemple, vous pouvez calculer dynamiquement la taille du bloc appropriée en fonction de la longueur du tableau avant de diviser le tableau, en vous assurant que le dernier bloc n'est pas vide. Par exemple:

 <?php
$arr = [1, 2, 3, 4, 5, 6, 7];
$chunkSize = 3;
$remaining = count($arr) % $chunkSize;

if ($remaining > 0) {
    $chunkSize = $remaining;
}

$chunked = array_chunk($arr, $chunkSize);
print_r($chunked);
?>

De cette façon, le code ajustera la taille du dernier bloc en fonction de la longueur du tableau pour éviter les blocs vides.

Résumer

À travers les exemples de cet article, nous comprenons le problème que la fonction Array_Chunk () peut générer des blocs vides lors du divisation d'un tableau et explorer deux solutions: filtrer les blocs vides avec array_filter () , ou ajustant dynamiquement la taille du bloc pour éviter la génération de blocs vides. Selon différents besoins, vous pouvez choisir la solution appropriée pour vous assurer que l'effet du tableau est comme prévu.