Laravel 多维数组不计算结果
Laravel multidimensional array not counting results
我的联赛排名有问题。团队有不止一场比赛,但结果只显示一场。所以数组中的结果不计算在内。
例如:
第一支球队打了不止一场比赛,但数组只显示了一场,数组:
array:10 [▼
"firstTeam" => array:6 [▼
"points" => 3
"scoredGoals" => 3
"goalsConceded" => 1
"wins" => 1
"loses" => 0
"draws" => 0
]
"secondTeam" => & array:6 [▶]
"thirdTeam" => array:6 [▶]
"fourthTeam" => array:6 [▶]
"fifthTeam" => array:6 [▶]
"sixthTeam" => array:6 [▶]
"seventhTeam" => & array:6 [▶]
"eighthTeam" => array:6 [▶]
"ninthTeam" => & array:6 [▶]
"tenthTeam" => array:6 [▶]
]
匹配:
帮助计算结果。
我的控制器:
foreach ($matches as $match) {
$homeTeamScore = $match->score->home_team_score;
$awayTeamScore = $match->score->away_team_score;
$standings[$match->homeTeam->name] = $blank;
$standings[$match->awayTeam->name] = $blank;
$home = &$standings[$match->homeTeam->name];
$away = &$standings[$match->awayTeam->name];
$away['scoredGoals'] += $awayTeamScore;
$home['scoredGoals'] += $homeTeamScore;
$away['goalsConceded'] += $homeTeamScore;
$home['goalsConceded'] += $awayTeamScore;
switch ($homeTeamScore <=> $awayTeamScore) {
case -1:
// home lost
// swap home and away and let it fall through
$tmpHome = &$home;
$home = &$away;
$away = &$tmpHome;
case 1:
// home won
$home['points'] += 3;
$home['wins']++;
$away['loses']++;
break;
default:
// draw
$home['points']++;
$away['points']++;
$home['draws']++;
$away['draws']++;
}
}
积分榜:
您必须停止在每次迭代时覆盖团队的排名数组。如果你想调整以前的代码,你可以调整下面的内容:
这个:
$standings[$match->homeTeam->name] ??= $blank;
$standings[$match->awayTeam->name] ??= $blank;
是:
if (! isset($standings[$match->homeTeam->name])) {
$standings[$match->homeTeam->name] = $blank;
}
if (! isset($standings[$match->awayTeam->name])) {
$standings[$match->awayTeam->name] = $blank;
}
??=
是来自 PHP 7.4 的运算符,因此您可能使用的是较低版本的 PHP.
我的联赛排名有问题。团队有不止一场比赛,但结果只显示一场。所以数组中的结果不计算在内。
例如:
第一支球队打了不止一场比赛,但数组只显示了一场,数组:
array:10 [▼
"firstTeam" => array:6 [▼
"points" => 3
"scoredGoals" => 3
"goalsConceded" => 1
"wins" => 1
"loses" => 0
"draws" => 0
]
"secondTeam" => & array:6 [▶]
"thirdTeam" => array:6 [▶]
"fourthTeam" => array:6 [▶]
"fifthTeam" => array:6 [▶]
"sixthTeam" => array:6 [▶]
"seventhTeam" => & array:6 [▶]
"eighthTeam" => array:6 [▶]
"ninthTeam" => & array:6 [▶]
"tenthTeam" => array:6 [▶]
]
匹配:
帮助计算结果。
我的控制器:
foreach ($matches as $match) {
$homeTeamScore = $match->score->home_team_score;
$awayTeamScore = $match->score->away_team_score;
$standings[$match->homeTeam->name] = $blank;
$standings[$match->awayTeam->name] = $blank;
$home = &$standings[$match->homeTeam->name];
$away = &$standings[$match->awayTeam->name];
$away['scoredGoals'] += $awayTeamScore;
$home['scoredGoals'] += $homeTeamScore;
$away['goalsConceded'] += $homeTeamScore;
$home['goalsConceded'] += $awayTeamScore;
switch ($homeTeamScore <=> $awayTeamScore) {
case -1:
// home lost
// swap home and away and let it fall through
$tmpHome = &$home;
$home = &$away;
$away = &$tmpHome;
case 1:
// home won
$home['points'] += 3;
$home['wins']++;
$away['loses']++;
break;
default:
// draw
$home['points']++;
$away['points']++;
$home['draws']++;
$away['draws']++;
}
}
积分榜:
您必须停止在每次迭代时覆盖团队的排名数组。如果你想调整以前的代码,你可以调整下面的内容:
这个:
$standings[$match->homeTeam->name] ??= $blank;
$standings[$match->awayTeam->name] ??= $blank;
是:
if (! isset($standings[$match->homeTeam->name])) {
$standings[$match->homeTeam->name] = $blank;
}
if (! isset($standings[$match->awayTeam->name])) {
$standings[$match->awayTeam->name] = $blank;
}
??=
是来自 PHP 7.4 的运算符,因此您可能使用的是较低版本的 PHP.