我有以下输入:总和多维数组元素的
$data = array(
0 => array(
'date' => '2014-01-01',
'sales' => 1,
'price' => array(
'usd' => 1,
'eur' => 100
)
),
1 => array(
'date' => '2014-01-05',
'sales' => 1,
'price' => array(
'usd' => 1,
'eur' => 100,
'gbp' => 500
)
),
2 => array(
'date' => '2016-03-27',
'sales' => 5,
'age' => 50
),
3 => array(
'date' => '2016-03-28',
'sales' => 10
)
);
我期待下面的输出:
$final = array(
'March 2016' => array(
'sales' => 15
),
'January 2014' => array(
'sales' => 2,
'price' => array(
'usd' => 2,
'eur' => 200,
'gbp' => 500
)
)
);
我到目前为止已经做了什么?
$monthlyData = array();
foreach ($dailyData as $day)
{
$key = date('M y', strtotime($day['date']));
if (!isset($monthlyData[$key]))
{
$monthlyData[$key] = $day;
continue;
}
foreach ($day as $metric => $value)
{
if(!empty($value))
{
$monthlyData[$key][$metric] += $value;
}
}
}
嗯,我知道,我们可以为了得到正确的结果使用好醇” foreach
(用递归调用),但是我正在寻找一些更好的解决方案。
是来自MySQL表的数据吗?如果是这样,在查询本身中可能更优雅。 – rybo111
不,它是API的响应。 :-( – vitozev
是''price'=>数组('您的第一个元素的'价格'或'价格'? – Federkun