Heim > Artikel > Backend-Entwicklung > Wie gruppiere ich mehrdimensionale Array-Daten nach mehreren Spalten und aggregiere Werte in PHP?
Mehrdimensionale Array-Daten nach mehreren Spalten gruppieren und Werte aggregieren
Problemstellung:
Sie verfügen über ein mehrdimensionales Array, das Daten aus zwei separaten Datenbankabfragen kombiniert. Das Array besteht aus Datensätzen mit Attributen wie „Teil“, „Adresse“, „Typ“ und „Anzahl“. Das Ziel besteht darin, die Array-Elemente basierend auf den „Teil“- und „Typ“-Werten zu gruppieren und die Summe der „Anzahl“-Werte innerhalb jeder Gruppe zu berechnen.
Beispieleingabe:
<code class="php">$arr1 = [ ['part' => '1', 'address' => 'aaa', 'type' => '1', 'count' => 5], ['part' => '1', 'address' => 'bbb', 'type' => '1', 'count' => 5], ['part' => '1', 'address' => 'ccc', 'type' => '1', 'count' => 5], ['part' => '2', 'address' => 'aaa', 'type' => '1', 'count' => 5], ['part' => '2', 'address' => 'bbb', 'type' => '1', 'count' => 5], ['part' => '2', 'address' => 'ccc', 'type' => '2', 'count' => 5] ];</code>
Erwartete Ausgabe:
<code class="php">$arr2 = [ ['part' => '1', 'type' => '1', 'count' => 15], ['part' => '2', 'type' => '1', 'count' => 10], ['part' => '2', 'type' => '2', 'count' => 5] ];</code>
Lösung:
Um die gewünschte Gruppierung und Aggregation zu erreichen, können wir verwenden PHPs Array-Manipulationsfunktionen. Betrachten Sie die folgende Funktion:
<code class="php">function groupByPartAndType($input) { $output = Array(); foreach($input as $value) { $output_element = & $output[$value['part'] . "_" . $value['type']]; $output_element['part'] = $value['part']; $output_element['type'] = $value['type']; !isset($output_element['count']) && $output_element['count'] = 0; $output_element['count'] += $value['count']; } return array_values($output); }</code>
Durch die Anwendung dieser Funktion auf das Eingabearray $arr1 erhalten wir die gewünschte Ausgabe $arr2. Jedes Element im Ausgabearray stellt eine Gruppe von Datenpunkten dar, die die gleichen „Teil“- und „Typ“-Werte haben, zusammen mit der Summe der entsprechenden „Anzahl“-Werte.
Alternativer Ansatz:
Wenn beide Datenbankabfragen vom selben Datenbankserver stammen, könnten Sie möglicherweise die GROUP BY-Funktion von SQL verwenden, um die Gruppierung und Aggregation innerhalb der Datenbank selbst durchzuführen, wodurch eine Nachbearbeitung in PHP entfällt.
Das obige ist der detaillierte Inhalt vonWie gruppiere ich mehrdimensionale Array-Daten nach mehreren Spalten und aggregiere Werte in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!