Maison  >  Article  >  développement back-end  >  Comment regrouper des lignes dans un tableau 2D par colonne et additionner une autre colonne ?

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

Patricia Arquette
Patricia Arquetteoriginal
2024-11-10 08:10:02824parcourir

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

Regrouper les données des lignes d'un tableau 2D par colonne et additionner une autre colonne

Lors de l'analyse des données tabulaires, il devient souvent nécessaire de consolider les lignes en fonction des données partagées. valeurs dans des colonnes spécifiques tout en effectuant des calculs sur d’autres colonnes. Relevez le défi consistant à regrouper les lignes d'un tableau 2D et à additionner les valeurs d'une colonne différente.

Énoncé du problème :

Vous recevez un tableau 2D où chaque ligne représente une entrée de données. . L'objectif est de regrouper ces lignes par une colonne de regroupement spécifiée (par exemple, « dd ») et de additionner les valeurs d'une autre colonne (par exemple, « quantité ») au sein de chaque groupe. Le résultat doit être un tableau 2D réduit avec des valeurs de regroupement uniques et les valeurs de colonne additionnées correspondantes.

Exemple :

Input:
[
    ['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'],
];

Desired result:
[
    ['quantity' => 15, 'dd' => '01-Nov-2012'],
    ['quantity' => 3,  'dd' => '02-Nov-2012'],
    ['quantity' => 19, 'dd' => '03-Nov-2012'],
];

Solution :

Pour résoudre ce problème, suivez ces étapes :

  1. Parcourez chaque ligne : Parcourez le tableau 2D d'entrée ligne par ligne.
  2. Vérifier le groupe existant : Déterminez si un groupe pour la valeur de regroupement de la ligne actuelle (« dd ») existe déjà dans un tableau de sortie.
  3. Créez un nouveau groupe si nécessaire : Si aucun groupe n'existe pour la valeur de regroupement de la ligne actuelle, créez une nouvelle entrée dans le tableau de sortie avec la valeur de regroupement et une valeur de « quantité » initiale de 0.
  4. Accumuler la quantité : Incrémenter la valeur « quantité » du groupe existant ou nouvellement créé par la valeur « quantité » de la ligne actuelle.
  5. Extraire le tableau final :Reconvertissez le tableau de sortie dans un format indexé numériquement pour correspondre au résultat souhaité.

Voici un exemple d'implémentation en PHP :

$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);

Cette solution regroupe efficacement les lignes par colonne spécifiée, accumule les valeurs de colonne dans chaque groupe et produit une image 2D réduite. tableau comme résultat souhaité.

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!

Déclaration:
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