首頁 > 後端開發 > php教程 > 如何以兩列將多維數組分組並對每組求和?

如何以兩列將多維數組分組並對每組求和?

Mary-Kate Olsen
發布: 2024-11-06 01:16:02
原創
863 人瀏覽過

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

按兩列對多維數組資料進行分組並對每組的值求和

考慮透過組合兩個單獨的資料庫查詢的結果所建立的數組,類似於以下內容:

$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 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>
登入後複製

此函數迭代輸入數組,並使用由「part」和「type」值組合鍵控的元素填充輸出數組。對於每個輸出元素,它會適當地設定「part」、「type」和「count」字段,確保「count」字段在尚未設定時初始化為零。此函數傳回輸出數組中的值的數組。

將此函數應用於 $arr1,我們得到所需的結果:

$arr2 = [
    ['part' => '1', 'type' => '1', 'count' => 15],
    ['part' => '2', 'type' => '1', 'count' => 10],
    ['part' => '2', 'type' => '2', 'count' => 5]
];
登入後複製

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板