Position actuelle: Accueil> Derniers articles> Utilisez Array_Chunk pour diviser les données du tableau par des périodes horaires, quotidiennes et autres

Utilisez Array_Chunk pour diviser les données du tableau par des périodes horaires, quotidiennes et autres

M66 2025-04-26

En PHP, la fonction Array_Chunk peut diviser un grand tableau en plusieurs petits tableaux. Bien que Array_Chunk soit généralement regroupé par une longueur fixe d'un tableau, dans certains scénarios, nous devrons peut-être regrouper le tableau par période de temps (comme toutes les heures, quotidiennement, etc.). Cet article présentera comment mettre en œuvre des tableaux par période de temps via Array_Chunk .

1. Quelle est la fonction Array_Chunk ?

Array_Chunk est une fonction de PHP qui divise un grand tableau en plusieurs petits tableaux. Sa syntaxe de base est la suivante:

 array_chunk(array $array, int $size, bool $preserve_keys = false): array
  • $ Array : un tableau qui doit être divisé.

  • $ Taille : le nombre maximum d'éléments par petit tableau.

  • $ Preserve_keys : s'il faut conserver le nom de clé du tableau d'origine, la valeur par défaut est fausse .

2. Répanes de groupes par période

Supposons que nous ayons un éventail d'horodatrices qui doivent être regroupés par des périodes horaires ou quotidiennes. Nous pouvons utiliser Array_Chunk pour nous aider à y parvenir.

Groupé à l'heure

Tout d'abord, nous pouvons créer un tableau d'horodatage et les regrouper par heure. Ce que nous devons faire, c'est convertir l'horodatage en une heure et regrouper les horodatages avec la même heure en groupe.

 // Simuler le tableau d'horodatage
$timestamps = [
    1617763200, // 2021-04-07 00:00:00
    1617766800, // 2021-04-07 01:00:00
    1617770400, // 2021-04-07 02:00:00
    1617802800, // 2021-04-07 06:00:00
    1617806400, // 2021-04-07 07:00:00
    1617810000, // 2021-04-07 08:00:00
    1617813600  // 2021-04-07 09:00:00
];

// Horodatage de groupe à l'heure
$groupedByHour = [];
foreach ($timestamps as $timestamp) {
    $hour = date('Y-m-d H', $timestamp); // Formatez l'horodatage à l'heure
    $groupedByHour[$hour][] = $timestamp;
}

// Sortir un tableau regroupé par des heures
print_r($groupedByHour);

Le code ci-dessus regroupera les horodatages en fonction de la partie heure de chaque horodatage, et les tableaux de sortie seront regroupés par heures, par exemple:

 Array
(
    [2021-04-07 00] => Array
        (
            [0] => 1617763200
        )

    [2021-04-07 01] => Array
        (
            [0] => 1617766800
        )

    [2021-04-07 02] => Array
        (
            [0] => 1617770400
        )

    [2021-04-07 06] => Array
        (
            [0] => 1617802800
        )

    [2021-04-07 07] => Array
        (
            [0] => 1617806400
        )

    [2021-04-07 08] => Array
        (
            [0] => 1617810000
        )

    [2021-04-07 09] => Array
        (
            [0] => 1617813600
        )
)

Groupe par quotidien

Nous pouvons également regrouper les horodatages de jour, afin que chaque groupe contienne tous les horodatages en une journée.

 // Timestaps de groupe de jour
$groupedByDay = [];
foreach ($timestamps as $timestamp) {
    $day = date('Y-m-d', $timestamp); // Formater l'horodatage de jour
    $groupedByDay[$day][] = $timestamp;
}

// Tableau de sortie regroupé par jour
print_r($groupedByDay);

Le résultat de la sortie sera regroupé par jours:

 Array
(
    [2021-04-07] => Array
        (
            [0] => 1617763200
            [1] => 1617766800
            [2] => 1617770400
            [3] => 1617802800
            [4] => 1617806400
            [5] => 1617810000
            [6] => 1617813600
        )
)

3. Résumé

Avec Array_Chunk, nous pouvons facilement regrouper un tableau d'horodatage par des périodes (telles que toutes les heures, quotidiennement, etc.). Bien que Array_Chunk soit généralement utilisé pour regrouper le nombre d'éléments, nous utilisons ici la fonction date () pour formater les horodatages dans la période dont nous avons besoin, puis les regrouper par ces périodes.