Maison > développement back-end > tutoriel php > Comment regrouper les lignes d'un tableau 2D par une colonne et en additionner une autre ?

Comment regrouper les lignes d'un tableau 2D par une colonne et en additionner une autre ?

Susan Sarandon
Libérer: 2024-11-23 01:45:15
original
904 Les gens l'ont consulté

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

Réduire un tableau 2D en regroupant les lignes par une colonne et en en additionnant une autre au sein de chaque groupe

Dans ce scénario, vous cherchez à manipuler un tableau 2D tableau en organisant ses lignes en fonction d'une colonne spécifique tout en agrégeant les valeurs d'une autre colonne au sein de chaque groupe créé.

Pour résoudre ce problème besoin, envisagez d'utiliser une approche itérative à travers les lignes du tableau d'entrée :

$in = array(
    ['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

Créez un tableau de sortie vide :

$out = array();
Copier après la connexion

Maintenant, parcourez chaque ligne :

foreach ($in as $row) {
Copier après la connexion

Dans chaque ligne, vérifiez si la valeur dd est déjà présente dans le tableau $out :

if (!isset($out[$row['dd']])) {
Copier après la connexion

Si non, créez une nouvelle entrée pour la valeur dd avec la « quantité » initialisée :

$out[$row['dd']] = array(
    'dd' => $row['dd'],
    'quantity' => 0,
);
Copier après la connexion

Quoi qu'il en soit, mettez à jour la valeur de la quantité en ajoutant la quantité de la ligne actuelle :

$out[$row['dd']]['quantity'] += $row['quantity'];
Copier après la connexion

Enfin, numériquement indexez le tableau $out pour obtenir le tableau 2D réduit souhaité :

$out = array_values($out);
Copier après la connexion

En conséquence, vous obtenez le tableau résumé avec lignes regroupées :

var_dump($out);

[
    ['quantity' => 15, 'dd' => '01-Nov-2012'],
    ['quantity' => 3, 'dd' => '02-Nov-2012'],
    ['quantity' => 19, 'dd' => '03-Nov-2012'],
]
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