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
Mary-Kate OlsenOriginal
2024-11-06 01:16:02830Durchsuche

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]
];

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>

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]
];

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!

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