spermer_co Posted February 28, 2007 Report Share Posted February 28, 2007 Man mircaa ir skripts kuram ir komanda !punkti niks 3 un tas pieliek 3 punktus klaat cilveekam ar noraadiito niku. Tas viss saglabaajaas failaa points.dat un tad var apskatiit mircaa ar komandu !top5. Lieta taada ka vaidzeetu lai sho top5 var apskatiit arii webaa. Caur webu var piekļūt šim failam ja zin adresi. Mans jautājums. Vai kāds nevarētu uzrakstīt kādu skriptiņu kas izvadītu informāciju no ši faila šādā formātā Niks Punkti Betmens 23 Kaamis 22 Arnolds 21 Biete 20 Fantastika 19 Viņam vaidzētu sakārtoties no cilvēka kam ir visvairāk punkti līdz vismazāk. Teksta failā tas saglabājas šādi Niks 1 Niks 2 Tas 1 un 2 ir punktu skaits. Viņi nesakārtojas tā pēc kārtas kuram mazāk punktu līdz kuram vairāk. Tas ir vienkārši pēc pievienošanas vēstures. Kuru pievienoja pirmo tas ir augšā vai apakšā, nez ^^, bet tas nav īpaši svarīgi. Link to comment Share on other sites More sharing options...
Exzo Posted March 1, 2007 Report Share Posted March 1, 2007 Nu piemēram: Ielasi points.dat masīvā kur 'Niks' => punkti un arsort($array) sakārto... Link to comment Share on other sites More sharing options...
andrisp Posted March 1, 2007 Report Share Posted March 1, 2007 Niks tajā failā var atkārtoties ? Respektīvi, vai pievienojot punktus lietotājam, kam jau ir pievienoti punkti, tie tiek saskaitīti kopā un failā paliek tikai viens attiecīgais ieraksts, vai arī ar katru punktu pievienošanu tiek pievienots jauns ieraksts ? Link to comment Share on other sites More sharing options...
spermer_co Posted March 1, 2007 Author Report Share Posted March 1, 2007 nevar atkaartoties.. Punkti vinam pieskaitaas klaat un ja sakuma bija Niks 5 Tad peec 2 punktu pievienoshanas Niks 7 Link to comment Share on other sites More sharing options...
andrisp Posted March 1, 2007 Report Share Posted March 1, 2007 <?php $arr = file('faila_nosaukums'); $top = array(); for($i = 0; $i < count($arr); $i++) { if ($i % 2 == 0) { $top[$arr[$i + 1]] = $arr[$i]; } } krsort($top); $top = array_slice($top, 0, 5, true); foreach($top as $k => $v) { echo $v.' - '.$k.'<br />'; } ?> Tikai šeit nav paredzēta iespēja, ka diviem vai vairākiem lietotājiem var būt vienāds punktu skaits. Link to comment Share on other sites More sharing options...
spermer_co Posted March 1, 2007 Author Report Share Posted March 1, 2007 (edited) nu vaidzeetu lai vareetu, bet pilnigi vienalga kursh ir augstaak ar vienadiem punktu skaitiem. ak jaa.. un lai vinsh sakaarto taa ka tas kuram ir vairaak ir 1 vietaa, un taa.. 1. niks 10 2. niks 9 3. niks 8 4. niks 7 5. niks 6 Edited March 1, 2007 by spermer_co Link to comment Share on other sites More sharing options...
andrisp Posted March 1, 2007 Report Share Posted March 1, 2007 Viņš taču sakārto. To, kā numerāciju pielikt klāt, gan izdomā pats. Link to comment Share on other sites More sharing options...
spermer_co Posted March 1, 2007 Author Report Share Posted March 1, 2007 jaa tomeer sakaarto.. nu bet taa la vinsh atbalsta vairaakus cilveekus ar vienaadu rezultatu? Link to comment Share on other sites More sharing options...
andrisp Posted March 1, 2007 Report Share Posted March 1, 2007 Kaut kā šādi. No tevis pieci lati ;). <?php $arr = file('faila_nosaukums'); $top = array(); for($i = 0; $i < count($arr); $i++) { if ($i % 2 == 0) { if(!isset($top[$arr[$i + 1]])) { $top[$arr[$i + 1]] = $arr[$i]; } else { $top[$arr[$i + 1]] .= ' / '.$arr[$i]; } } } krsort($top); $top = array_slice($top, 0, 5, true); foreach($top as $k => $v) { echo $v.' - '.$k.'<br />'; } ?> Link to comment Share on other sites More sharing options...
spermer_co Posted March 1, 2007 Author Report Share Posted March 1, 2007 (edited) njaa.. viss bija labi liidz kaads sasniedza 10 punktus.. ja punkti ir vairak par 10 (parbaudits uz 10 un 11) tad vinsh uztver to kaa zemaaku vietu un manaa top5 vispar neparadijas.. iespejams vinsh buutu kautkur top10 vai top20.. EDIT: nomainiju lai raada top20 un es sapratu to ka 10 un 11 ir mazaaks par 2 Fobz - 9 WyB - 5 SSJGoku - 4 xrusts - 3 ^D3v1L^ / liiv` - 2 Kzlv`spermis - 11 icky - 10 ayck - 1 Te man nav top20 jo tik daudz cilveku anv Edited March 1, 2007 by spermer_co Link to comment Share on other sites More sharing options...
andrisp Posted March 1, 2007 Report Share Posted March 1, 2007 Man it kā testējot to kodu, kārtoja tā kā vajag. Varbūt paeksperimentē pie krsort ar "sorting type flags" (tos var apskatīt iekš http://lv.php.net/manual/en/function.sort.php) Link to comment Share on other sites More sharing options...
spermer_co Posted March 1, 2007 Author Report Share Posted March 1, 2007 nevari paliidzeet? ^^ Link to comment Share on other sites More sharing options...
Roze Posted March 2, 2007 Report Share Posted March 2, 2007 Jasortē ir ar SORT_NUMERIC.. pretēji tākā tur defaultais type sanāk string šāda kārtošanas faktiski ir pareiza pēc 1 nāk 10 tad 2 utt.. krsort($top,SORT_NUMERIC); Link to comment Share on other sites More sharing options...
spermer_co Posted March 2, 2007 Author Report Share Posted March 2, 2007 OK shis straadaa <?php $arr = file('points.dat'); $top = array(); for($i = 0; $i < count($arr); $i++) { if ($i % 2 == 0) { $score = (integer)$arr[$i + 1]; if(!isset($top[$score])) { $top[$score] = $arr[$i]; } else { $top[$score] .= ' / '.$arr[$i]; } } } krsort($top); $top = array_slice($top, 0, 5, true); foreach($top as $k => $v) { echo $v.' - '.$k.'<br />'; } ?> Link to comment Share on other sites More sharing options...
Recommended Posts