首頁 >後端開發 >php教程 >如何在 PHP 中按列對數組資料進行分組和求和?

如何在 PHP 中按列對數組資料進行分組和求和?

DDD
DDD原創
2024-12-06 13:52:12968瀏覽

How to Group and Sum Array Data by Column in PHP?

將一列的陣列資料分組,並將另一列的資料求和以形成平面關聯陣列

問題:

給定一個包含鍵值對的數組,根據特定列的值將資料分組,並對另一列的資料求和。例如,如果您有以下數組:

$array = [
    ['name' => 'Bank BRI', 'amount' => 0], 
    ['name' => 'Bank BRI', 'amount' => 0], 
    ['name' => 'Bank BCA', 'amount' => 1412341234],
    ['name' => 'Bank CIMB Niaga', 'amount' => 532532552], 
    ['name' => 'Bank BRI', 'amount' => 34534534], 
    ['name' => 'Bank CIMB Niaga', 'amount' => 453425243], 
    ['name' => 'Bank BRI', 'amount' => 0], 
    ['name' => 'Bank BNI', 'amount' => 124124], 
    ['name' => 'Bank CIMB Niaga', 'amount' => 352345623], 
    ['name' => 'Bank BCA', 'amount' => 23432423], 
    ['name' => 'Bank Mandiri', 'amount' => 0], 
    ['name' => 'Bank BCA', 'amount' => 0], 
    ['name' => 'Bank BCA', 'amount' => 0], 
    ['name' => 'Bank Permata', 'amount' => 352352353],
];

解決方案:

根據'name' 列對資料進行分組並對'amount' 列,請按照以下步驟操作:

  1. 初始化一個名為$bankTotals 的空數組。該數組將儲存分組資料。
  2. 使用 foreach 迴圈迭代輸入陣列。
  3. 對於陣列中的每個元素,檢查bankTotals 陣列是否已包含與「名稱」相符的鍵' 當前元素的值。
  4. 如果bankTotals 陣列不包含與目前「name」值相符的鍵,則使用該值建立新鍵並將其值設為0。
  5. 將目前元素的金額值加到bankTotals數組中對應的鍵。

迭代整個輸入數組後,$bankTotals數組將包含以銀行名稱為鍵、以總金額為值的分組資料。

以下是達到所需效果的程式碼輸出:

$bankTotals = array();
foreach($array as $amount)
{
  $bankTotals[$amount['name']] += $amount['amount'];
}

print_r($bankTotals);

輸出:

Array
(
    [Bank BRI] => 34534534
    [Bank BCA] => 1435773657
    [Bank CIMB Niaga] => 1338303418
    [Bank BNI] => 124124
    [Bank Mandiri] => 0
    [Bank Permata] => 352352353
)

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

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