<?php
$csv = [
['user' => 'user1', 'acct_num' => '1', 'value' => 32],
['user' => 'user1', 'acct_num' => '1', 'value' => 2],
['user' => 'user1', 'acct_num' => '2', 'value' => 32],
['user' => 'user1', 'acct_num' => '2', 'value' => 32],
['user' => 'user2', 'acct_num' => '1', 'value' => 312],
['user' => 'user2', 'acct_num' => '1', 'value' => 320],
];
$subtotals = [];
$totals = [];
$results = [];
foreach($csv as $row) {
list($user, $acct_num, $value) = array_values($row);
$subtotal = isset($subtotals[$user][$acct_num]) ? $subtotals[$user][$acct_num] : 0;
$subtotals[$user][$acct_num] = $subtotal + $value;
$total = isset($totals[$user]) ? $totals[$user] : 0;
$totals[$user] = $total + $value;
}
foreach ($subtotals as $user => $acct_nums) {
foreach ($acct_nums as $acct_num => $value) {
$total = $totals[$user];
$avg = $value / $total;
$results[] = compact('user', 'acct_num', 'value', 'total', 'avg');
}
}
print_r($results);
preferences:
50.67 ms | 402 KiB | 5 Q