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!