SkarreMedlem sedan apr. 20012 427 inlägg Jag har en tvådimensionell matris innehållande basketlag i den första dimensionen och information om deras resultat i den andra. Jag försöker sortera dessa efter en eller flera nycklar, t.ex. efter poäng, sedan målskillnad och sedan målfaktor för att få fram en resultattabell.
Ett index i den första dimensionen (ett lag) har följande nycklar:
$teams[$i]['name']
$teams[$i]['played']
$teams[$i]['won']
$teams[$i]['lost']
$teams[$i]['points_made']
$teams[$i]['points_given']
$teams[$i]['difference']
$teams[$i]['points']
$teams[$i]['point_factor']
Jag har lyckats sortera efter en nyckel i taget enligt nedan, men är osäker på hur jag sorterar efter flera nycklar.
function cmp ($a, $b) {
return $a['points'] < $b['points'];
}
usort($teams,'cmp');
Tack på förhand!
AsterixMedlem sedan dec. 1999483 inlägg Så här kanske:
function cmp ($a, $b)
{
if ($a['points'] == $b['points'])
{
if ($a['difference'] == $b['difference'])
{
return $a['point_factor'] < $b['point_factor'];
}
return $a['difference'] < $b['difference'];
}
return $a['points'] < $b['points'];
}
SkarreMedlem sedan apr. 20012 427 inlägg Det verkar fungera utmärkt! Tack ska du ha! :)
AsterixMedlem sedan dec. 1999483 inlägg Såg att du frågade om inbördesmöten så jag testar om jag får in det också. Inget är testat men i teorin bör det funka :)
function cmp ($a, $b)
{
global $match;
if ($a['points'] == $b['points'])
{
if ($a['difference'] == $b['difference'])
{
if ($a['point_factor'] == $b['point_factor'])
{
foreach ($match[$a['name']][$b['name']] as $value)
{
if ($value[0] > $value[1])
{
$a_point += 3;
}
elseif ($value[1] > $value[0])
{
$b_point += 3;
}
else
{
$a_point += 1;
$b_point += 1;
}
}
foreach ($match[$b['name']][$a['name']] as $value)
{
if ($value[0] > $value[1])
{
$b_point += 3;
}
elseif ($value[1] > $value[0])
{
$a_point += 3;
}
else
{
$a_point += 1;
$b_point += 1;
}
}
return $a_point < $b_point;
}
return $a['point_factor'] < $b['point_factor'];
}
return $a['difference'] < $b['difference'];
}
return $a['points'] < $b['points'];
}
$match['AIK']['DJURGÅRDEN'][] = array (1,0);
$match['AIK']['DJURGÅRDEN'][] = array (2,0);
$match['DJURGÅRDEN']['AIK'][] = array (7,0);
$match['DJURGÅRDEN']['AIK'][] = array (1,2);
SkarreMedlem sedan apr. 20012 427 inlägg Man tackar så mycket! Jag ska titta närmare på koden efter helgen.