循环遍历数组并汇总具有相同ID的值

时间:2012-08-13 20:00:23

标签: php arrays

我全黑了。我有一个包含n个元素的数组,它们具有团队的结果,例如:

阵列(队友,胜利,失败,平局,目标);

array(1, 2, 3, 4, 5);
array(2, 2, 3, 4, 5);
array(1, 1, 2, 2, 6);
array(2, 2, 3, 4, 5);

我想迭代这个数组并总结第二个数组中每个team-id的值。如:

$results = getResults();
$final = array();

foreach ($results as $result) {
foreach ($results as $res) {
if ($res['team_id'] == $result['team_id']) {
...
}
}
}

foreach ($final as $finalresult) {
...print result
}

最后我想要一个数组,例如在这个例子中,2个值有2个不同的团队ID,每个值总结,但我现在有一个停电。

有人有解决方案吗?

感谢。

2 个答案:

答案 0 :(得分:2)

你正在运行嵌套循环,这意味着你实际上正在计算n ^ 2条记录。假设两个数组之间的数组键相同,那么您只需要一个循环:

$arr1 = array(...);
$arr2 = array(...);
$sum = 0;

foreach($arr1 as $key => $value) {
    $sum += $arr1[$key] + $arr2[$key];
}

如果键不一样,那么你必须弄清楚是否匹配两个阵列的成员。

答案 1 :(得分:1)

您的代码令人困惑,但我想它会给出一个提示:

$results = getResults();
$final = array();

foreach ($results as $result) {
    if(!isset($final[$result['team_id']])) {
        $final[$result['team_id']] = $result['wins'];
    } else {
        $final[$result['team_id']] += $result['wins'];
    }
}

foreach($final as $key=>$value) {
    echo $key . ' ' . $value . '</br>';
}