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

Mary-Kate Olsen
Freigeben: 2024-11-17 02:33:03
Original
643 Leute haben es durchsucht

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

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

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

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

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!

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