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

Susan Sarandon
發布: 2024-11-23 01:45:15
原創
834 人瀏覽過

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

透過按一列對行進行分組並對每組中的另一列求和來減少2D 數組

在這種情況下,您尋求操作2D 陣列透過根據特定列組織其行,同時聚合每個群組中另一列的值來建立陣列建立。

要滿足此需求,請考慮對輸入陣列的行採用迭代方法:

$in = array(
    ['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'],
);
登入後複製

建立一個空輸出陣列:

$out = array();
登入後複製

現在,遍歷每一行:

foreach ($in as $row) {
登入後複製

在每一行中,檢查dd 值是否已經存在於$out陣列:

if (!isset($out[$row['dd']])) {
登入後複製

如果沒有,請使用初始化的「數量」為dd 值建立一個新條目:

$out[$row['dd']] = array(
    'dd' => $row['dd'],
    'quantity' => 0,
);
登入後複製

無論如何,透過新增目前的數量來更新數量值行的數量:

$out[$row['dd']]['quantity'] += $row['quantity'];
登入後複製

最後,對$out陣列進行數字索引以實現所需的簡化二維array:

$out = array_values($out);
登入後複製

因此,您將獲得包含分組行的總數組:

var_dump($out);

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

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

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