Heim >Backend-Entwicklung >PHP-Tutorial >Wie gruppiere und summiere ich Spalten in einem 2D-PHP-Array?
Spalten in einem 2D-Array gruppieren und summieren
Die Aufgabe besteht darin, ein PHP-Datenarray zu verarbeiten, wobei jedes Element eine Zeile darstellt. und jede Zeile besteht aus zwei Spalten: url_id und time_spent. Das Ziel besteht darin, die Zeilen nach der Spalte „url_id“ zu gruppieren und die Werte in der Spalte „time_spent“ für jede Gruppe zu summieren.
Lösung:
Wir können PHPs array_count_values() verwenden Funktion, um dies zu erreichen:
<code class="php">$ts_by_url = array_count_values(array_column($array, 'url_id'));</code>
Die Funktion array_column() extrahiert die Spalte url_id aus dem Eingabearray und erzeugt ein Array von url_id-Werten. Die Funktion array_count_values() zählt dann die Vorkommen jedes url_id-Werts und gruppiert so effektiv die Zeilen.
Diese Lösung liefert jedoch nur eine Zählung der Vorkommen für jede url_id. Um die time_spent-Werte innerhalb jeder Gruppe zu summieren, müssen wir den Ansatz ändern:
<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>
In diesem aktualisierten Ansatz pflegen wir ein Array $ts_by_url, das die Summe der time_spent-Werte für jede url_id enthält. Wir durchlaufen das Eingabearray und prüfen für jede Zeile, ob die entsprechende url_id bereits in $ts_by_url vorhanden ist. Wenn nicht, initialisieren wir es mit einem Wert von 0. Unabhängig davon fügen wir den time_spent-Wert zum entsprechenden url_id-Eintrag in $ts_by_url hinzu.
Dieser Ansatz ermöglicht es uns, die Zeilen nach url_id zu gruppieren und die time_spent-Werte für zu summieren jede Gruppe. Das resultierende $ts_by_url-Array enthält die gewünschten Summen, verschlüsselt durch url_id.
Das obige ist der detaillierte Inhalt vonWie gruppiere und summiere ich Spalten in einem 2D-PHP-Array?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!