Reduzieren eines 2D-Arrays durch Gruppieren von Zeilen nach einer Spalte und Summieren einer anderen innerhalb jeder Gruppe
In diesem Szenario möchten Sie ein 2D-Array manipulieren Array, indem es seine Zeilen basierend auf einer bestimmten Spalte organisiert und gleichzeitig die Werte einer anderen Spalte innerhalb jeder erstellten Gruppe aggregiert.
Um diesem Bedarf gerecht zu werden, Erwägen Sie die Verwendung eines iterativen Ansatzes durch die Zeilen des Eingabearrays:
$in = array( ['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'], );
Erstellen Sie ein leeres Ausgabearray:
$out = array();
Durchlaufen Sie nun jede Zeile:
foreach ($in as $row) {
Überprüfen Sie in jeder Zeile, ob der dd-Wert bereits im $out vorhanden ist Array:
if (!isset($out[$row['dd']])) {
Wenn nicht, erstellen Sie einen neuen Eintrag für den dd-Wert mit initialisierter „Menge“:
$out[$row['dd']] = array( 'dd' => $row['dd'], 'quantity' => 0, );
Aktualisieren Sie unabhängig davon den Mengenwert, indem Sie die Menge der aktuellen Zeile hinzufügen:
$out[$row['dd']]['quantity'] += $row['quantity'];
Zum Schluss indizieren Sie das $out-Array numerisch, um die gewünschte reduzierte 2D-Struktur zu erreichen Array:
$out = array_values($out);
Als Ergebnis erhalten Sie das zusammengefasste Array mit gruppierten Zeilen:
var_dump($out); [ ['quantity' => 15, 'dd' => '01-Nov-2012'], ['quantity' => 3, 'dd' => '02-Nov-2012'], ['quantity' => 19, 'dd' => '03-Nov-2012'], ]
Das obige ist der detaillierte Inhalt vonWie gruppiere ich Zeilen in einem 2D-Array nach einer Spalte und summiere eine andere?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!