如何按列將二維數組中的行分組並對另一列求和?

Patricia Arquette
發布: 2024-11-10 08:10:02
原創
784 人瀏覽過

How to Group Rows in a 2D Array by Column and Sum Another Column?

按列將二維數組行資料分組並對另一列求和

在分析表格資料時,經常需要根據共享資料來合併行特定列中的值,同時對其他資料列執行計算。輸入對 2D 數組行進行分組並對不同列中的值求和的挑戰。

問題陳述:

您將獲得一個 2D 數組,其中每行代表一個資料條目。目標是按指定的分組列(例如「dd」)對這些行進行分組,並對每組內另一列(例如「quantity」)的值求和。結果應該是一個簡化的二維數組,具有唯一的分組值和相應的求和列值。

範例:

Input:
[
    ['quantity' => 5,  'dd' => '01-Nov-2012'],
    ['quantity' => 10, 'dd' => '01-Nov-2012'],
    ['quantity' => 3,  'dd' => '02-Nov-2012'],
    ['quantity' => 4,  'dd' => '03-Nov-2012'],
    ['quantity' => 15, 'dd' => '03-Nov-2012'],
];

Desired result:
[
    ['quantity' => 15, 'dd' => '01-Nov-2012'],
    ['quantity' => 3,  'dd' => '02-Nov-2012'],
    ['quantity' => 19, 'dd' => '03-Nov-2012'],
];
登入後複製

解:

要解此問題,請依照下列步驟操作:

  1. 迭代每一行:逐行遍歷輸入二維數組。
  2. 檢查現有群組:判斷輸出陣列中是否已存在目前行分組值('dd')的群組。
  3. 如有必要,建立新群組: 如果目前行的分組值不存在群組,則在輸出陣列中使用分組值和初始「​​數量」值為0 建立新條目。
  4. 累積數量: 增量現有或新建立的群組的「數量」值除以目前行的「數量」值。
  5. 提取最終數組:將輸出數組轉換回數字索引格式以匹配

以下是PHP 中的示例實現:

$in = array(array()); // your input
$out = array();
foreach ($in as $row) {
    if (!isset($out[$row['dd']])) {
        $out[$row['dd']] = array(
            'dd' => $row['dd'],
            'quantity' => 0,
        );
    }
    $out[$row['dd']]['quantity'] += $row['quantity'];
}
$out = array_values($out); // make the out array numerically indexed
var_dump($out);
登入後複製

此解決方案有效地按指定列對行進行分組,累積每個組內的列值,並產生簡化的2D數組作為所需的結果。

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

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