Daten gruppieren und Spalten in einem 2D-Array summieren
In Datenverarbeitungsszenarien kann es erforderlich sein, Zeilen eines 2D-Arrays zu gruppieren basierend auf einer angegebenen Spalte und sammeln Sie dann die Werte in einer anderen Spalte innerhalb jeder Gruppe.
Problemstellung:
Gegeben sei ein Eingabearray wie das unten gezeigte:
[ ['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'], ]
Sie möchten die Zeilen nach der Spalte „dd“ gruppieren und die „Menge“-Werte innerhalb jeder Gruppe summieren. Die erwartete Ausgabe ist:
[ ['quantity' => 15, 'dd' => '01-Nov-2012'], ['quantity' => 3, 'dd' => '02-Nov-2012'], ['quantity' => 19, 'dd' => '03-Nov-2012'], ]
Lösung:
Um dies zu erreichen, können wir einen einfachen Schleifenmechanismus verwenden. Beginnend mit der ersten Zeile prüfen wir, ob der Wert „dd“ bereits im Ausgabearray vorhanden ist. Wenn nicht, erstellen wir einen neuen Eintrag für dieses „dd“ und initialisieren die „Menge“ auf 0.
Dann fügen wir für jede Zeile die „Menge“ zur entsprechenden Gruppe im Ausgabearray hinzu. Wir wiederholen diesen Vorgang, bis alle Zeilen verarbeitet wurden. Abschließend konvertieren wir das Ausgabearray mithilfe von array_values() in eine numerische Indizierung.
Der folgende PHP-Code demonstriert die Lösung:
$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);
Das obige ist der detaillierte Inhalt vonWie gruppiere ich Zeilen nach einer bestimmten Spalte und summiere eine andere Spalte in einem 2D-Array?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!