求和数组值

时间:2016-01-20 11:53:10

标签: php arrays sum

我的数组和sum_array()函数存在问题。

此代码无法正常运行。我已经评论了应该打印的内容。

$teams[1]['AREA I']['blue'] = 30;
$teams[1]['AREA I']['green'] = 25;
$teams[1]['AREA II']['blue'] = 15;
$teams[2]['AREA I']['blue'] = 40;

echo array_sum($teams[1]); // 30+25+15=70
echo array_sum($teams[1]['AREA I']); // 30+25=55
echo array_sum($teams[1]['AREA I']['blue']); // 30

我认为我使用数组错误的方式,但我是新手,并且赞赏了一些咨询。

提前致谢。

4 个答案:

答案 0 :(得分:2)

array_sum - 计算数组中值的总和。由于你的数组是多维的,所以你应该循环它。请尝试以下方法:

$teams[1]['AREA I']['blue'] = 30;
$teams[1]['AREA I']['green'] = 25;
$teams[1]['AREA II']['blue'] = 15;
$teams[2]['AREA I']['blue'] = 40;
$sum = 0;

foreach($teams as $num => $values) {
    if(is_array($values))
    {
        foreach($values as $num1 => $values1) {
            $sum += array_sum($values1);
        }
    }
}
echo $sum;

答案 1 :(得分:1)

看看下面的解决方案,希望它能帮助你获得欲望的结果。 我使用迭代器来迭代数组:

function getSum($array){
    if(is_array($array)) {
        $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
        $sum = 0;
        foreach ($iterator as $key => $value) {
            $sum += $value;
        }
    } else{
        $sum = $array;
    }
    return $sum;
}

$teams = array();
$teams[1]['AREA I']['blue'] = 30;
$teams[1]['AREA I']['green'] = 25;
$teams[1]['AREA II']['blue'] = 15;
$teams[2]['AREA I']['blue'] = 40;

echo getSum($teams); //output: 110
echo getSum($teams[1]); //output: 70
echo getSum($teams[1]['AREA I']); //output: 55
echo getSum($teams[1]['AREA I']['blue']); //output: 30

答案 2 :(得分:0)

array_sum()期望将一个数组作为参数传递,因此如果您在启用error_reporting的情况下运行当前代码,它将返回以下内容:

  

E_WARNING:类型2 - array_sum()期望参数1为数组,给定整数 - 第10行

您将数字30作为整数传递给期望数组的函数,因此错误并且不会返回您期望的内容。

您可以阅读PHP手册中的功能:

http://php.net/manual/en/function.array-sum.php

您还可以找到有用的错误报告页面:

http://php.net/manual/en/function.error-reporting.php

答案 3 :(得分:0)

由于array_sum()适用于单维数组,因此它不适用于您的第一种和第三种情况。它仅适用于您的第二种情况,如下所示。

  

echo array_sum($ teams [1] [' AREA I']);