Heim > Backend-Entwicklung > PHP-Tutorial > Wie gruppiere ich Zeilen in einem 2D-Array nach einer Spalte und summiere eine andere?

Wie gruppiere ich Zeilen in einem 2D-Array nach einer Spalte und summiere eine andere?

Susan Sarandon
Freigeben: 2024-11-23 01:45:15
Original
889 Leute haben es durchsucht

How to Group Rows in a 2D Array by One Column and Sum Another?

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'],
);
Nach dem Login kopieren

Erstellen Sie ein leeres Ausgabearray:

$out = array();
Nach dem Login kopieren

Durchlaufen Sie nun jede Zeile:

foreach ($in as $row) {
Nach dem Login kopieren

Überprüfen Sie in jeder Zeile, ob der dd-Wert bereits im $out vorhanden ist Array:

if (!isset($out[$row['dd']])) {
Nach dem Login kopieren

Wenn nicht, erstellen Sie einen neuen Eintrag für den dd-Wert mit initialisierter „Menge“:

$out[$row['dd']] = array(
    'dd' => $row['dd'],
    'quantity' => 0,
);
Nach dem Login kopieren

Aktualisieren Sie unabhängig davon den Mengenwert, indem Sie die Menge der aktuellen Zeile hinzufügen:

$out[$row['dd']]['quantity'] += $row['quantity'];
Nach dem Login kopieren

Zum Schluss indizieren Sie das $out-Array numerisch, um die gewünschte reduzierte 2D-Struktur zu erreichen Array:

$out = array_values($out);
Nach dem Login kopieren

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'],
]
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage