Heim > Artikel > Backend-Entwicklung > Wie gruppiere ich Zeilen in einem 2D-Array nach Spalten und summiere eine andere Spalte?
2D-Array-Zeilendaten nach Spalte gruppieren und eine weitere Spalte summieren
Bei der Analyse tabellarischer Daten ist es häufig erforderlich, Zeilen basierend auf gemeinsamen Daten zu konsolidieren Werte in bestimmten Spalten, während Berechnungen für andere Spalten durchgeführt werden. Stellen Sie sich der Herausforderung, 2D-Array-Zeilen zu gruppieren und Werte aus einer anderen Spalte zu summieren.
Problemstellung:
Sie erhalten ein 2D-Array, in dem jede Zeile einen Dateneintrag darstellt . Das Ziel besteht darin, diese Zeilen nach einer bestimmten Gruppierungsspalte (z. B. „dd“) zu gruppieren und die Werte aus einer anderen Spalte (z. B. „Menge“) innerhalb jeder Gruppe zu summieren. Das Ergebnis sollte ein reduziertes 2D-Array mit eindeutigen Gruppierungswerten und den entsprechenden summierten Spaltenwerten sein.
Beispiel:
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'], ];
Lösung:
Um dieses Problem zu lösen, führen Sie die folgenden Schritte aus:
Hier ist eine Beispielimplementierung in 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);
Diese Lösung gruppiert Zeilen effizient nach der angegebenen Spalte, akkumuliert Spaltenwerte innerhalb jeder Gruppe und erzeugt ein reduziertes 2D Array als gewünschtes Ergebnis.
Das obige ist der detaillierte Inhalt vonWie gruppiere ich Zeilen in einem 2D-Array nach Spalten und summiere eine andere Spalte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!