首頁 >後端開發 >php教程 >如何以多個列值對多維數組進行分組並對另一列的值求和?

如何以多個列值對多維數組進行分組並對另一列的值求和?

Patricia Arquette
Patricia Arquette原創
2024-11-05 22:49:021045瀏覽

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

以多列值將多維數組資料分組並對列值求和

問題:

此問題涉及一個數組來自跨不同資料庫的多個資料庫查詢的資料。目標是根據兩列值(“part”和“type”)對數組元素進行分組,並計算每個組的第三列(“count”)的總和。

陣列範例:

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

所需輸出:

<code class="php">$arr2 = [
    ['part' => '1', 'type' => '1', 'count' => 15],
    ['part' => '2', 'type' => '1', 'count' => 10],
    ['part' => '2', 'type' => '2', 'count' => 5]
];</code>

解🎜>

對數組元素進行分組並對“count”值求和,可以使用以下函數:

<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>
此函數迭代輸入數組,識別每個元素的“part”和“type”值。然後,它使用這些值作為鍵來建立或檢索輸出元素。對於每個鍵,函數會初始化一個「count」欄位(如果該欄位不存在),並使用該元素的「count」欄位的值遞增該欄位。最後,它傳回一個包含分組元素的陣列。

以上是如何以多個列值對多維數組進行分組並對另一列的值求和?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn