0

简单地说,我将给出输入,然后给出我需要的输出。

我有 2 个变量循环,直到没有更多数据,$year并且$profit.

_________________________
Year              Profit

2011              23.42
2011              253.23
2011              54.5
2012              433.23
2012              53.2
2013              11.4
2013              45.5
2013              532.1

我想知道最好的方法是将年份相同的所有值加在一起,所以它看起来像这样:

_________________________
Year              Profit

2011              331.15
2012              486.42
2013              589

我试过arrays了,但我总是得到一个Undefined Index错误。我会发布一个示例,但是变量太多,发生的事情太多,任何人都无法直接理解。

感谢任何可以帮助我的人!

4

2 回答 2

2

如果我假设$year并且$profit长度相同并且按索引正确排序,您可以这样做:

$year = array(2011, 2011, 2011, 2012, 2012, 2013, 2013, 2013);
$profit = array(23.42, 253.23, 54.5, 433.23, 53.2, 11.4, 45.5, 532.1);

$sums = array();

for ($i = 0; $i < count($year); $i++) {
    if (isset($sums[$year[$i]])) {
        $sums[$year[$i]] += $profit[$i];
    } else {
        $sums[$year[$i]] = $profit[$i];
    }
}

print_r($sums);

输出:

Array
(
    [2011] => 331.15
    [2012] => 486.43
    [2013] => 589
)
于 2013-07-29T11:59:24.090 回答
0

试试这个代码:

$result = array();
foreach ($data as $value) {
    if (isset($result[$value['year']])) {
        $result[$value['year']] += $value['profit'];
    } else {
        $result[$value['year']] = $value['profit'];
    }
}
于 2013-07-29T11:51:47.370 回答