簡體   English   中英

php-多維數組中每天的數組總和

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM