在多维数组中求和数组键的元素

时间:2016-06-07 13:09:42

标签: php php-5.4

这是我的数组

[Company] => Array
        (
            [0] => Array
                (
                    [date] => 2016-05-28
                    [revenue] => 55
                )

            [1] => Array
                (
                    [date] => 2016-05-28
                    [revenue] => 101
                )

            [2] => Array
                (
                    [date] => 2016-05-29
                    [revenue] => 55
                )

            [3] => Array
                (
                    [date] => 2016-05-29
                    [revenue] => 101
                )

            [4] => Array
                (
                    [date] => 2016-05-30
                    [revenue] => 60
                )

            [5] => Array
                (
                    [date] => 2016-05-30
                    [revenue] => 60
                )

            [6] => Array
                (
                    [date] => 2016-05-31
                    [revenue] => 29
                )

            [7] => Array
                (
                    [date] => 2016-05-31
                    [revenue] => 60
                )

)

我需要这样总结一下

[Company] => Array
        (
        [0] => Array
         (
           [date] => 2016-05-28
           [revenue] => 151
         )
         *
         *etc.
)

我徒劳地试过各种方法。我尝试过以下方法,但效果不佳

    foreach($data as $key => $value) {
        foreach ($value as $row) {


            $res[$key][$row['date']] += $row['revenue'];
        }
    }

3 个答案:

答案 0 :(得分:1)

这应该可以工作,因为你在每个数组上循环两次并不理想,因为数组越大,这将呈指数级减速。

Image[i*width+j] = Image[i*width+(j-2)]*(1-2/3) + Image[i*width+(j+1)]*(1-1/3)

答案 1 :(得分:1)

我没有@atoms的答案, 但它将在一个foreach中完成

     $newArr = array();
     foreach($arr['Company'] as $key => $value) {
        if(isset($newArr[$value['date']])){
            $newArr[$value['date']]['revenue'] = $newArr[$value['date']]['revenue'] + $value['revenue'];
        } else {
            $newArr[$value['date']] = $value;
        }
    }
    $newArr = array_values($newArr);

答案 2 :(得分:0)

$revenue_sum=0;
$elements_sum=0;
   foreach($data as $key => $value) { // 1st dimension
        foreach ($value as $key2 => $value2) { // 2nd dimension
            if ($key2 == "revenue") {
                 $revenue_sum += $value2;
            }
            $elements_sum++;
        }
    }

 echo "Revenue sum: ".$total_sum;
 echo "Elements sum: ".$elements_sum;
相关问题