[英]php - Sum array value per day in multidimensional array
關於如何對多維關聯數組求和的問題,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);
您可以通過is_array()
簡單地使用嵌套的foreach
$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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.