Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich ein mehrdimensionales Array nach mehreren Spaltenwerten gruppieren und die Werte einer anderen Spalte summieren?

Wie kann ich ein mehrdimensionales Array nach mehreren Spaltenwerten gruppieren und die Werte einer anderen Spalte summieren?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-05 22:49:02961Durchsuche

How can I group a multidimensional array by multiple column values and sum another column's values?

Mehrdimensionale Array-Daten nach mehreren Spaltenwerten gruppieren und Spaltenwerte 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 = &amp;$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!

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