Heim  >  Artikel  >  Backend-Entwicklung  >  Wie gruppiere ich mehrdimensionale Array-Daten nach mehreren Spalten und aggregiere Werte in PHP?

Wie gruppiere ich mehrdimensionale Array-Daten nach mehreren Spalten und aggregiere Werte in PHP?

Susan Sarandon
Susan SarandonOriginal
2024-11-07 03:53:02259Durchsuche

How do I Group Multidimensional Array Data by Multiple Columns and Aggregate Values 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!

Stellungnahme:
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