透過按一列對行進行分組並對每組中的另一列求和來減少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中文網其他相關文章!