1

完全に停電しました。次のようなチームの結果を持つn個の要素を持つ1つの配列があります。

配列(チーム、勝ち、負け、引き分け、ゴール);

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

この配列を反復処理して、各チームIDの値を2番目の配列に合計します。そのような:

$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つの異なるチームIDを持つ2つの値を持つ配列が必要です。各値は合計されますが、現時点ではブラックアウトが発生しています。

誰かが解決策を持っていますか?

ありがとう。

4

2 に答える 2

2

ネストされたループを実行しています。つまり、実際には n^2 レコードを合計しています。配列キーが両方の配列間で同じであると仮定すると、必要なループは 1 つだけです。

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

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

キーが同じでない場合は、2 つの配列のメンバーを一致させる必要があります。

于 2012-08-13T20:09:01.073 に答える
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>';
}
于 2012-08-13T20:08:29.640 に答える