I have a script that runs through football fixtures, each day it will work out the teams played, wins, draws, losses, gd and points. At the end of each day it will upload the table to the database, so that I have a different table for each day (I have my reasons for it lol)
Problem is here is an example my code that creates the array.
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
}
So the final array would be like
[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
)
How would I be to order the array by 'points' -> 'goaldifference' -> 'name'.
I have looked at things like uSort, but because the second part of my array, is team names,and that I want to order by 3 increasing values. I can't find anything that seems to get me to understand how to do it.
Sorry if you know of a duplicate, I have had a search, but I haven't been able to find anything.