Jeg har forsøgt at lave en funktion til formålet, omend jeg ikke "i god tro" kan anbefale dig at anvende det.
For at sortere på spilleTid, er vi nødt til at konvertere dette til en sorterbar værdi. Jeg har i eksemplet valgt at konvertere det til sekunder. Détte bør du gøre på database niveau, således at PHP ikke skal foretage denne beregning. Såfremt tin "spilleTid" er af datetime type, kan du anvende følgende funktion, der vil konvertere spilleTid til antal sekunder siden 1970.
UNIX_TIMESTAMP(spilleTid)
Ref :
http://www.mysql.com/doc/en/Date_and_time_functions.htmlDesuden bør du, hvis du kun skal bruge 15 spilleTids poster, tilføje en LIMIT 0,15 på dine query's, således der ikke hentes flere felter end højest nødvendigt.
Mit eksempel herunder :
<?php
function cmp($a, $b) {
if ($a == $b) return 0;
$a = $a['spilleTid'];
$b = $b['spilleTid'];
$aSec = date('U', mktime(substr($a,11,2), substr($a,14,2), substr($a,17,2), substr($a,5,2), substr($a,8,2), substr($a,0,4)));
$bSec = date('U', mktime(substr($b,11,2), substr($b,14,2), substr($b,17,2), substr($b,5,2), substr($b,8,2), substr($b,0,4)));
return ($aSec < $bSec) ? -1 : 1;
}
$test = array();
$test[] = array('One'=>1, 'Two'=>2, 'OneScore'=>34, 'TwoScore'=>16, 'spilleTid'=>'2004-01-07 21:05:00');
$test[] = array('One'=>2, 'Two'=>3, 'OneScore'=>33, 'TwoScore'=>17, 'spilleTid'=>'2004-01-06 21:05:00');
$test[] = array('One'=>1, 'Two'=>2, 'OneScore'=>32, 'TwoScore'=>18, 'spilleTid'=>'2004-01-08 21:05:00');
$test[] = array('One'=>2, 'Two'=>3, 'OneScore'=>31, 'TwoScore'=>19, 'spilleTid'=>'2004-01-07 21:45:00');
$test[] = array('One'=>1, 'Two'=>2, 'OneScore'=>30, 'TwoScore'=>20, 'spilleTid'=>'2004-01-06 17:20:00');
echo 'Usorteret array<br><pre>';
print_r($test);
echo '</pre>';
uasort($test, 'cmp');
echo 'Sorteret array<br><pre>';
print_r($test);
echo '</pre>';
?>
uasort dok :
http://dk.php.net/uasort