Olen vähän harjoitellut tässä PHP:ta ja nyt en keksi miten toteuttaisin suunnitelmani. Ajatuksena olisi lukea tiedostosta nimi ja siihen kuuluva pistemäärä. Exploadilla olen jakanut tiedoston osiin. Tarkoituksena olisi järjestää pisteet/nimet pistejärjestykseen.
Tästä pätkästä ehkä näkyy mitä yritän saavuttaa.
Pitäisi korvata tuo FOR-looppi jollain toimivalla.
<?php $pisteet = array( for ($i = (count($pelaajadata)/2); $i = 0; $i--) { "$$pelaajadata[i*2-1]" => "$piste[i-1]"}); arsort($pisteet); $rank = 0; foreach ($pisteet as $nimi => $pt) { $rank++; if($pt>0){ echo "<tr><td class=\"td2\">".$rank."</td> <td class=\"td1\">".$nimi."</td> <td class=\"td2\">".number_format($pt)."</td></tr>"; } } ?>
Mod. edit: Kooditagit.
<?php $f = file("pisteet.txt"); /* Matti 10 Pekka 15 */ $taulu = array(); for ($i = 0; $i < count($f); $i += 2) { $taulu[] = array( "pelaaja" => $f[$i], "pisteet" => $f[$i + 1] ); } # Vertailufunktio; # Jos a < b, vertailu < 0; # Jos a > b, vertailu > 0; # Jos a == b, vertailu = 0; function vertailu(&$a, &$b) { return $a['pisteet'] - $b['pisteet']; } usort($taulu, "vertailu"); ?>
Kiitos neuvosta, mutta en taida osata soveltaa tuota.
Edellinen toimiva, mutta turhan pitkä versio meni tällä tapaa:
<?php $pisteet = array( "nimi1" => "$piste[0]", "nimi2" => "$piste[1]", "nimi3" => "$piste[2]", "nimi4" => "$piste[3]", "nimi5" => "$piste[4]" )?>
Voisiko tuollaisen loopin tehdä?
Miksi $piste[...] on lainausmerkkien sisällä?
No niinpä näkyy olevan. Ei kyllä pitäisi.
Jostain syystä se toimi noin silti.
Kyllä se toimiikin, mutta aiheuttaa ylimääräistä merkkijonon parsimista palvelimelta.
Aihe on jo aika vanha, joten et voi enää vastata siihen.