rendered paste body<?phpfunction fieldsortfactory($fieldname, $reverse=false) { if($reverse){ return create_function('$l, $r', 'return $r["'.$fieldname.'"] - $l["'.$fieldname.'"];'); } return create_function('$l, $r', 'return $l["'.$fieldname.'"] - $r["'.$fieldname.'"];');}$lines = file('chatstats.dat');// unset($lines[0], $lines[1]);$stats = array();foreach($lines as $line) { $rawstats = explode(' ', $line); if(count($rawstats) < 15) continue; $linestats = array( 'username' => $rawstats[0], 'tt_words' => $rawstats[4], 'as_words' => $rawstats[6], 'bans' => $rawstats[9], 'banned' => $rawstats[11], 'kicks' => $rawstats[8], 'kicked' => $rawstats[10] ); $stats[$linestats['username']] = $linestats;}$toptalkers=$allstars=$stats;uasort($toptalkers, fieldsortfactory('tt_words', true));uasort($allstars, fieldsortfactory('as_words', true));$tt_ranks = array_flip(array_keys($toptalkers));$as_ranks = array_flip(array_keys($allstars));foreach($stats as $username => $userstats){ $stats[$username]['tt_rank'] = $tt_ranks[$username]+1; $stats[$username]['as_rank'] = $as_ranks[$username]+1;}$userstats = $stats[$username];$ttpos = $userstats['tt_rank'];$ttwords= $userstats['tt_words'];$aspos = $userstats['as_rank'];$aswords= $userstats['as_words'];$bans = $userstats['bans'];$banned = $userstats['banned'];$kicks = $userstats['kicks'];$kicked = $userstats['kicked'];//to grab top10 toptalkersforeach($tt_ranks as $talker => $rank){ if( rank > 10 ) break; //we've already got the top 10 -- bail outof the loop //do stuff here. //to get the user's other stats, use $stats[$talker] //f.ex.: echo $rank . '. ' . $talker . ' - ' . $stats[$talker]['tt_words'] . ' words';}?>