Maison  >  Article  >  développement back-end  >  Comment regrouper et additionner des colonnes dans un tableau PHP 2D ?

Comment regrouper et additionner des colonnes dans un tableau PHP 2D ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-26 04:06:27551parcourir

How to Group and Sum Columns in a 2D PHP Array?

Regrouper et additionner des colonnes dans un tableau 2D

La tâche consiste à traiter un tableau PHP de données, où chaque élément représente une ligne, et chaque ligne se compose de deux colonnes : url_id et time_spent. L'objectif est de regrouper les lignes par la colonne url_id et de additionner les valeurs dans la colonne time_spent pour chaque groupe.

Solution :

Nous pouvons utiliser array_count_values() de PHP fonction pour y parvenir :

<code class="php">$ts_by_url = array_count_values(array_column($array, 'url_id'));</code>

La fonction array_column() extrait la colonne url_id du tableau d'entrée, produisant un tableau de valeurs url_id. La fonction array_count_values() compte ensuite les occurrences de chaque valeur url_id, regroupant efficacement les lignes.

Cependant, cette solution ne fournit qu'un décompte des occurrences pour chaque url_id. Pour additionner les valeurs time_spent au sein de chaque groupe, nous devons modifier l'approche :

<code class="php">$ts_by_url = array();
foreach ($array as $data) {
    if (!array_key_exists($data['url_id'], $ts_by_url)) {
        $ts_by_url[$data['url_id']] = 0;
    }
    $ts_by_url[$data['url_id']] += $data['time_spent'];
}</code>

Dans cette approche mise à jour, nous maintenons un tableau $ts_by_url qui contiendra la somme des valeurs time_spent pour chaque url_id. Nous parcourons le tableau d'entrée, vérifiant pour chaque ligne si l'url_id correspondant est déjà présent dans $ts_by_url. Sinon, nous l'initialisons avec une valeur de 0. Quoi qu'il en soit, nous ajoutons la valeur time_spent à l'entrée url_id correspondante dans $ts_by_url.

Cette approche nous permet de regrouper les lignes par url_id et de additionner les valeurs time_spent pour chaque groupe. Le tableau $ts_by_url résultant contiendra les sommes souhaitées, saisies par url_id.

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