Heim > Artikel > Backend-Entwicklung > Wie kann ich ein mehrdimensionales Array nach mehreren Spaltenwerten gruppieren und die Werte einer anderen Spalte summieren?
Problem:
Dieses Problem betrifft ein Array mit Daten aus mehreren Datenbankabfragen in verschiedenen Datenbanken. Das Ziel besteht darin, die Array-Elemente basierend auf zwei Spaltenwerten („part“ und „type“) zu gruppieren und die Summe einer dritten Spalte („count“) für jede Gruppe zu berechnen.
Array-Beispiel :
<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>
Gewünschte 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:
So gruppieren Sie die Array-Elemente und die „Anzahl“-Werte summieren, kann die folgende Funktion verwendet werden:
<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>
Diese Funktion durchläuft das Eingabearray und identifiziert die „Teil“- und „Typ“-Werte für jedes Element. Anschließend werden diese Werte als Schlüssel zum Erstellen oder Abrufen von Ausgabeelementen verwendet. Für jeden Schlüssel initialisiert die Funktion ein „count“-Feld, falls es nicht existiert, und erhöht es mit dem Wert des „count“-Feldes dieses Elements. Schließlich wird ein Array zurückgegeben, das die gruppierten Elemente enthält.
Das obige ist der detaillierte Inhalt vonWie kann ich ein mehrdimensionales Array nach mehreren Spaltenwerten gruppieren und die Werte einer anderen Spalte summieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!