我已经在这方面工作了一段时间,似乎无法找到解决方案。
我开始使用这样的数组:
[
[
'username' => 'test',
'amount' => 1.05
],
[
'username' => 'test',
'amount' => 2.05
],
[
'username' => 'test',
'amount' => 3.05
],
[
'username' => 'demo',
'amount' => 4.10
],
[
'username' => 'demo',
'amount' => 4.10
],
[
'username' => 'demo',
'amount' => 2.10
]
]
我最终希望得到一个像这样的数组:
[
[
'username' => 'test',
'total' => 6.15
],
[
'username' => 'demo',
'total' => 10.30
]
]
正如您所看到的,我正在尝试为每个用户提取金额值,添加它们并推送到一个新的数组,其中包含用户名和总金额。
关于如何实现这一目标的任何想法?
答案 0 :(得分:0)
因此,您可以简单地遍历数组的每个元素,并使用Array['username']['total']
形式填充多维关联数组。
function sumByUsername($array)
{
foreach ($array as $item) {
$output[$item['username']]['total'] += $item['amount'];
}
return $output;
}
所以使用你的测试数据:
$output = sumByUsername($input);
var_dump($output);
你得到的数组如下:
// array(2) {
// ["test"]=>
// array(1) {
// ["total"]=>
// float(6.15)
// }
// ["demo"]=>
// array(1) {
// ["total"]=>
// float(10.3)
// }
// }
要获得您指定的确切输出,请将以下行添加到循环中:
function sumByUsername($array)
{
foreach ($array as $item) {
$output[$item['username']]['username'] = $item['username']; // <-----
$output[$item['username']]['total'] += $item['amount'];
}
}
// array(2) {
// ["test"]=>
// array(2) {
// ["username"]=>
// string(4) "test"
// ["total"]=>
// float(6.15)
// }
// ["demo"]=>
// array(2) {
// ["username"]=>
// string(4) "demo"
// ["total"]=>
// float(10.3)
// }
// }