首頁 >後端開發 >php教程 >如何按特定列對行進行分組並對二維數組中的另一列求和?

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

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-17 02:33:03728瀏覽

How to Group Rows by a Specific Column and Sum Another Column in a 2D 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'],
]

您希望按“dd”列並對每組內的“數量”值求和。預期輸出為:

[
    ['quantity' => 15, 'dd' => '01-Nov-2012'],
    ['quantity' => 3,  'dd' => '02-Nov-2012'],
    ['quantity' => 19, 'dd' => '03-Nov-2012'],
]

解:

為了實現這一點,我們可以使用簡單的循環機制。從第一行開始,我們檢查「dd」值是否已存在於輸出陣列中。如果沒有,我們為該“dd”建立一個新條目,並將“數量”初始化為 0。

然後,對於每一行,我們將「數量」加到輸出數組中的對應組中。我們重複此過程,直到處理完所有行。最後,我們使用 array_values() 將輸出陣列轉換為數字索引。

以下 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);

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

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