將二維數組中的資料分組並求和
在資料處理場景中,你可能會遇到對二維數組的行進行分組的需求是基於指定的列,然後累積每個欄位中另一列的值
問題陳述:
給定一個如下所示的輸入陣列:
[ ['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中文網其他相關文章!