首页 > 解决方案 > 按键对多面数组中的元素求和

问题描述

我想根据列对数组中的所有元素求和

我试着做这个总和但不是预期的结果。

我的数组:

Array
(
[0] => Array
    (
        [Periode] => 2008/2009
        [Producteurs] => 2
        [Sucreries] => 0
        [Papeteries] => 0
    )

[1] => Array
    (
        [Periode] => 2008/2009
        [Producteurs] => 0
        [Sucreries] => 0
        [Papeteries] => 5
    )

[2] => Array
    (
        [Periode] => 2008/2009
        [Producteurs] => 0
        [Sucreries] => 14
        [Papeteries] => 0
    )

[3] => Array
    (
        [Periode] => 2009/2010
        [Producteurs] => 2
        [Sucreries] => 0
        [Papeteries] => 0
    )

[4] => Array
    (
        [Periode] => 2009/2010
        [Producteurs] => 0
        [Sucreries] => 0
        [Papeteries] => 4
    )

[5] => Array
    (
        [Periode] => 2009/2010
        [Producteurs] => 0
        [Sucreries] => 13
        [Papeteries] => 0
    )
)

我尝试这样:

 foreach ($result as $value){
    $result[$value]['Periode'] = $result[$value]['Producteurs'] + $result[$value]['Sucreries'] + $result[$value]['Papeteries'];
 }

但不是我预期的工作。

预期结果是:

Array
(
   [0] => Array
    (
        [Periode] => 2008/2009
        [Producteurs] => 2
        [Sucreries] => 14
        [Papeteries] => 5
    ),
   [1] => Array
    (
        [Periode] => 2009/2010
        [Producteurs] => 2
        [Sucreries] => 13
        [Papeteries] => 4
    )

实际上,这个想法是按周期对所有元素进行求和,并按周期仅返回一个数组,该数组将包含该周期的每个元素的总和。

标签: phparraysphp-5.3

解决方案


您正在尝试将所有总数加到一个值中并将它们放入一个数组中,我什至不确定它的结构。您应该建立一组由“时期”索引的条目,然后在遇到新元素时将值添加到这些条目中......

$totals = array();
foreach ( $result as $value )   {
    if ( !isset($totals[$value['Periode']]))    {
        $totals[$value['Periode']] = $value;
    }
    else    {
        $totals[$value['Periode']]['Producteurs'] +=$value['Producteurs'];
        $totals[$value['Periode']]['Sucreries'] +=$value['Sucreries'];
        $totals[$value['Periode']]['Papeteries'] +=$value['Papeteries'];
    }
}

print_r(array_values($totals));

array_values()我用来移除密钥的最终结果。


推荐阅读