简体   繁体   中英

Sum all key/value pairs within a multidimensional PHP array

I am developing a small application that pulls recent game data for players, and I want to display a total amount of the stats (goals, assists, plusminus, shots, pim) across all of the games by each player id.

This is an example of what my array looks like for three games that were pulled. The top level is the game id, followed by the player id's that were involved in that game. The layer under each player id are the stats that I want to total up in my output.

测试

I have attempted to loop through each game and player with the following code, but it only appears to pull the non-totaled stats from the first game.

foreach ($results as $result) {
  foreach ($result as $index => $value) {
    $sumArray[$index] = (isset($sumArray[$index]) ? $sumArray[$index] + $value : $value);
  }
}

Would anyone be able offer some guidance on how I can loop through and total up the player stats for each player id occurrence? Any help would be appreciated. Thank you!

I try to use a more readable variable name

foreach ($results as $game) {
  foreach ($game as $player => $performance) {
    if ( !isset($sumArray[$player] ) {
      $sumArray[$player] = $performance;
    } else {
      foreach ( $performance as $type => $value) {
        $sumArray[$player][$type] += $value;
      }
  }
}

foreach ($results as $game) {

foreach ($game as $player => $performance) {
if ( !isset($sumArray[$player] ) {
    $sumArray[$player] = $performance;
} else {
    foreach ( $performance as $type => $value) {
        $sumArray[$player][$type] += $value;
    }
}

}

It works for me

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM