我有像这样的数据库数据:
date, storage, bandwidth, cost
我可以有这样的条目:
2013-10-24, 1, 0, 0.55;
2013-10-25, 1, 0, 0.50;
2013-10-25, 1, 0, 0.25;
2013-10-25, 0, 1, 0.50;
我从 db 中获取数据并进行 foreach。我当然会得到4行。我需要像这样对数据进行分组:
这意味着在 2013 年 10 月 24 日,我的存储成本为 0.55 而在 2013 年 10 月 25 日,我的存储成本为 0.75,带宽成本为 0.50
我做了一个功能:
公共函数 sortCostByDay($array, $key) { $return = 数组(); foreach($array as $v) { $storage = $bandwidth = $total = 0; if($v['storage'] == 1) { $storage += $v['cost']; $total += $存储; } 如果($v['带宽'] == 1) { $带宽 += $v['cost']; $total += $带宽; } $return[$v[$key]][] = array('storage' => $storage, 'bandwidth' => $bandwidth, 'total' => $total); } 返回 $return; }
这将按 $key 对我的初始数组进行分组。$key 是日期。
所以我最终得到了这个:
'2013-10-24' =>
array (size=1)
0 =>
array (size=3)
'storage' => 0.55
'bandwidth' => 0
'total' => 0.55
'2013-10-25' =>
array (size=3)
0 =>
array (size=3)
'storage' => 0.50
'bandwidth' => 0
'total' => 0.50
1 =>
array (size=3)
'storage' => 0.25
'bandwidth' => 0
'total' => 0.50
2 =>
array (size=3)
'storage' => 0
'bandwidth' => 0.50
'total' => 1
我不知道如何使它成为:
'2013-10-24' =>
array (size=1)
0 =>
array (size=1)
'storage' => 0.55
'bandwidth' => 0
'total' => 0.55
'2013-10-25' =>
array (size=1)
0 =>
array (size=3)
'storage' => 0.75
'bandwidth' => 0.50
'total' => 1.25
有什么想法吗?