【发布时间】:2018-10-20 21:05:52
【问题描述】:
我有一个贯穿足球赛程的脚本,它每天都会计算出比赛的球队、获胜、平局、失败、gd 和积分。每天结束时,它会将表格上传到数据库,这样我每天都有一个不同的表格(我有我的理由哈哈)
这里的问题是我创建数组的代码示例。
if (array_key_exists(strval($firstDate), $matches)) {
// Matches Exist
foreach($matches[$firstDate] as $matchList) {
$homeName = $matchList['homeTeamName'];
$homeScore = intval($matchList['homeTeamScore']);
$awayName = $matchList['awayTeamName'];
$awayScore = intval($matchList['awayTeamScore']);
$table[$homeName]['played']++;
$table[$awayName]['played']++;
// Check results
if ($homeScore > $awayScore) {
$table[$homeName]['homeWon']++;
$table[$awayName]['awayLost']++;
$table[$homeName]['points'] = $table[$homeName]['points'] + 3;
} else if ($homeScore == $awayScore) {
$table[$homeName]['homeDrawn']++;
$table[$awayName]['awayDrawn']++;
$table[$homeName]['points']++;
$table[$awayName]['points']++;
} else {
$table[$homeName]['homeLost']++;
$table[$awayName]['awayWon']++;
$table[$awayName]['points'] = $table[$awayName]['points'] + 3;
}
$table[$homeName]['homeFor'] = $table[$homeName]['homeFor'] + $homeScore;
$table[$homeName]['homeAgainst'] = $table[$homeName]['homeAgainst'] + $awayScore;
$table[$awayName]['awayFor'] = $table[$awayName]['awayFor'] + $awayScore;
$table[$awayName]['awayAgainst'] = $table[$awayName]['awayAgainst'] + $homeScore;
$table[$homeName]['goalDifference'] = intval($table[$homeName]['homeFor']) + intval($table[$homeName]['awayFor']) - intval($table[$homeName]['homeAgainst']) + intval($table[$homeName]['awayAgainst']);
$table[$awayName]['goalDifference'] = intval($table[$awayName]['homeFor']) + intval($table[$awayName]['awayFor']) - intval($table[$awayName]['homeAgainst']) + intval($table[$awayName]['awayAgainst']);
}
usort($table, function($a, $b) {
return $a['points'] - $b['points'];
});
} else {
// Matches Don't Exist
}
所以最终的数组会是这样的
[Dover_Athletic] => Array
(
[name] => Dover_Athletic
[league_name] => National League
[competitionId] => 5
[currentDateLeague] =>
[position] => 0
[played] => 3
[homeWon] => 0
[homeDrawn] => 0
[homeLost] => 1
[homeFor] => 0
[homeAgainst] => 1
[awayWon] => 0
[awayDrawn] => 1
[awayLost] => 1
[awayFor] => 3
[awayAgainst] => 4
[goalDifference] => 6
[points] => 1
)
[Braintree_Town] => Array
(
[name] => Braintree_Town
[league_name] => National League
[competitionId] => 5
[currentDateLeague] =>
[position] => 0
[played] => 3
[homeWon] => 0
[homeDrawn] => 0
[homeLost] => 1
[homeFor] => 0
[homeAgainst] => 2
[awayWon] => 0
[awayDrawn] => 1
[awayLost] => 1
[awayFor] => 1
[awayAgainst] => 2
[goalDifference] => 1
[points] => 1
)
我将如何按'points' -> 'goaldifference' -> 'name' 对数组进行排序。
我看过像 uSort 这样的东西,但是因为我数组的第二部分是团队名称,并且我想按 3 个递增的值排序。我找不到任何似乎能让我理解如何去做的事情。
对不起,如果您知道重复,我已经搜索过,但我找不到任何东西。
【问题讨论】:
-
请阅读How to create a Minimal, Complete, and Verifiable example。您的问题缺少代码和数据,以便我们为您的问题创建足够的答案
-
请以可读的方式格式化数组
-
抱歉代码很长,所以只用了一个sn-p来显示数组是如何创建的$table[teamname][key]。还更新了数组,使其可读。
标签: php arrays sorting multidimensional-array