Comment regrouper des lignes par une colonne spécifique et additionner une autre colonne dans un tableau 2D ?

Mary-Kate Olsen
Libérer: 2024-11-17 02:33:03
original
644 Les gens l'ont consulté

How to Group Rows by a Specific Column and Sum Another Column in a 2D Array?

Regroupement de données et addition de colonnes dans un tableau 2D

Dans les scénarios de traitement de données, vous pouvez rencontrer le besoin de regrouper les lignes d'un tableau 2D en fonction d'une colonne spécifiée, puis accumulez les valeurs dans une autre colonne au sein de chaque groupe.

Énoncé du problème :

Étant donné un tableau d'entrée comme celui présenté ci-dessous :

[
    ['quantity' => 5,  'dd' => '01-Nov-2012'],
    ['quantity' => 10, 'dd' => '01-Nov-2012'],
    ['quantity' => 3,  'dd' => '02-Nov-2012'],
    ['quantity' => 4,  'dd' => '03-Nov-2012'],
    ['quantity' => 15, 'dd' => '03-Nov-2012'],
]
Copier après la connexion

Vous souhaitez regrouper les lignes par la colonne « dd » et additionner les valeurs « quantité » au sein de chaque groupe. Le résultat attendu est :

[
    ['quantity' => 15, 'dd' => '01-Nov-2012'],
    ['quantity' => 3,  'dd' => '02-Nov-2012'],
    ['quantity' => 19, 'dd' => '03-Nov-2012'],
]
Copier après la connexion

Solution :

Pour y parvenir, nous pouvons utiliser un simple mécanisme de bouclage. En commençant par la première ligne, nous vérifions si la valeur 'dd' est déjà présente dans le tableau de sortie. Sinon, nous créons une nouvelle entrée pour ce « dd » et initialisons la « quantité » à 0.

Ensuite, pour chaque ligne, nous ajoutons la « quantité » au groupe correspondant dans le tableau de sortie. Nous répétons ce processus jusqu'à ce que toutes les lignes aient été traitées. Enfin, nous convertissons le tableau de sortie en indexation numérique à l'aide de array_values().

Le code PHP suivant illustre la solution :

$in = array(array()); // your input
$out = array();
foreach ($in as $row) {
    if (!isset($out[$row['dd']])) {
        $out[$row['dd']] = array(
            'dd' => $row['dd'],
            'quantity' => 0,
        );
    }
    $out[$row['dd']]['quantity'] += $row['quantity'];
}
$out = array_values($out); // make the out array numerically indexed
var_dump($out);
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal