Heim > Backend-Entwicklung > PHP-Tutorial > Wie gruppiert man ein mehrdimensionales Array nach zwei Spalten und summiert die Werte für jede Gruppe?

Wie gruppiert man ein mehrdimensionales Array nach zwei Spalten und summiert die Werte für jede Gruppe?

Mary-Kate Olsen
Freigeben: 2024-11-06 01:16:02
Original
836 Leute haben es durchsucht

How do you group a multidimensional array by two columns and sum values for each group?

Gruppieren von mehrdimensionalen Array-Daten nach zwei Spalten und Summieren von Werten für jede Gruppe

Stellen Sie sich ein Array vor, das durch die Kombination von Ergebnissen aus zwei separaten Datenbankabfragen erstellt wurde. Dies ähnelt dem Folgenden:

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

Das Ziel besteht darin, dieses Array nach „Teil“- und „Typ“-Spalten zu gruppieren und die Summe der „Anzahl“-Werte für jede Gruppe zu berechnen.

Um dies zu erreichen Dazu können wir die folgende Funktion nutzen:

<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']) &amp;&amp; $output_element['count'] = 0;
    $output_element['count'] += $value['count'];
  }

  return array_values($output);
}</code>
Nach dem Login kopieren

Diese Funktion durchläuft das Eingabearray und füllt ein Ausgabearray mit Elementen, die durch die Kombination der Werte „Teil“ und „Typ“ verschlüsselt sind. Für jedes Ausgabeelement werden die Felder „Teil“, „Typ“ und „Anzahl“ entsprechend festgelegt, um sicherzustellen, dass das Feld „Anzahl“ auf Null initialisiert wird, sofern es nicht bereits festgelegt ist. Die Funktion gibt ein Array der Werte aus dem Ausgabearray zurück.

Durch die Anwendung dieser Funktion auf $arr1 erhalten wir das gewünschte Ergebnis:

$arr2 = [
    ['part' => '1', 'type' => '1', 'count' => 15],
    ['part' => '2', 'type' => '1', 'count' => 10],
    ['part' => '2', 'type' => '2', 'count' => 5]
];
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie gruppiert man ein mehrdimensionales Array nach zwei Spalten und summiert die Werte für jede Gruppe?. 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