通过JSON数组循环得到分数-Laravel 5.2


Loop through JSON array to get score - Laravel 5.2

我在一个数组中循环以获得每支球队在一名球员最近10场比赛中的得分时遇到了问题。这就是我在这个数组中循环的方式:

       $WarzoneLast10MatchesTeamScore = [];
        foreach($warzoneLast10matches->Results->Teams as $idx => $stats){
            $WarzoneLast10MatchesTeamScore[$idx]['Score'] = $stats->Score;
            $WarzoneLast10MatchesTeamScore[$idx]['Id'] = $stats->Id;
        }

问题是这会给我一个错误,因为我正在努力打最后10场比赛,所以结果必须是result[0],result[1],依此类推。我的意思是:

+"Results": array:10 [▼
    0 => {#17371 ▼
      +"Links": {#13129 ▶}
      +"Id": {#13130 ▶}
      +"HopperId": "0e39ead4-383b-4452-bbd4-babb7becd82e"
      +"MapId": "c89dae21-f206-11e4-a1c2-24be05e24f7e"
      +"MapVariant": {#13121 ▶}
      +"GameBaseVariantId": "42f97cca-2cb4-497a-a0fd-ceef1ba46bcc"
      +"GameVariant": {#17372 ▶}
      +"MatchDuration": "PT6M50.2813116S"
      +"MatchCompletedDate": {#17367 ▶}
      +"Teams": array:2 [▼
        0 => {#17374 ▼
          +"Id": 0
          +"Score": 1
          +"Rank": 1
        }
        1 => {#17375 ▼
          +"Id": 1
          +"Score": 0
          +"Rank": 2
        }
      ]
      +"Players": array:1 [▶]
      +"IsTeamGame": true
      +"SeasonId": null
      +"MatchCompletedDateFidelity": 1
    }
    1 => {#17378 ▶}
    2 => {#17390 ▶}
    3 => {#17402 ▶}
    4 => {#17414 ▶}
    5 => {#17426 ▶}
    6 => {#17438 ▶}
    7 => {#17450 ▶}
    8 => {#17462 ▶}
    9 => {#17474 ▶}
  ]

很明显,我不想每场比赛都打10个循环,然后在我看来硬编码每场比赛的比分。如何循环浏览Results对象,然后获得Teams->score和Teams->Id对象?

FYI我知道我可以使用这样的集合:

public function getWarzoneLast10Matches($warzoneLast10matches) {
        // Collect al the results for this array
        $results = collect($warzoneLast10matches->Results);
        $array = $results->map(function($item, $key) {
                return [
                    'Gamertag' => $item->Players[0]->Player->Gamertag,
                    'MapId' => $item->MapId,
                    'GameBaseVariantId' => $item->GameBaseVariantId,
                    'Score' => $item->Teams[0]->Score,
                    'Score2' => $item->Teams[1]->Score,
                    'Id' => $item->Teams[0]->Id,
                    'Id2' => $item->Teams[1]->Id,
                ];
            });

        return $array;
    }

但这不会起作用,因为在一些比赛中只有一支球队,如果发生这种情况,我会错误地说未定义的偏移量1,因为没有第二支球队。我在上面使用的另一种方法不会出错。

听起来您可能需要使函数递归。

了解有关递归的更多信息