关于如何在多维关联数组中进行求和,Stackoverflow上有许多很棒的问题,但我还没有找到在多维数组中进行小计的工作示例。
例如,我有数据从mysql查询到php的形状:
$myArray = array(
'2014-4-3' => 2,
'2014-4-4' => 3,
'2014-4-5' => array(
0 => 3,
1 => 7,
2 => 7,
3 => 7
)
);
本质上,我正在按天提取餐馆的评级。有些日子可能有很多评级,而其他日子可能更少(没有评级的日子从数组中省略)。在有更多评级的日子里,我想要总结为该天的总数,所以一个新的数组看起来简单如下:
'2014-4-3' => 2
'2014-4-4' => 3
'2014-4-5' => 24
我已经尝试了几个小时来破解用于求和多维数组的foreach和函数方法,但到目前为止还没有。一个关键的问题是,日期本身并不是预先知道的,因为每增加一天,同样的过程必须扩展。
您可以使用array_map()
和array_sum()
:
$output = array_map(function($a) {
return is_array($a) ? array_sum($a) : $a;
}, $myArray);
这是一个演示
您可以简单地使用嵌套的foreach
和is_array()
$myArray = array(
'2014-4-3' => 2,
'2014-4-4' => 3,
'2014-4-5' => array(
0 => 3,
1 => 7,
2 => 7,
3 => 7
)
);
$new=array();
foreach($myArray as $day=>$value){
$newval =0;
if(is_array($value)){
foreach ($value as $val) {
$newval += $val;
}
}else{
$newval = $value;
}
$new[$day]=$newval;
}
var_dump($new);
你可以试试这个:
foreach($myArray as &$value){
if(is_array($value)){
$value = array_sum($value);
}
}