andrlan Skrevet 17. februar 2008 Skrevet 17. februar 2008 (endret) Hei! Kan noen hjelpe meg å sortere en array? Har kikka på php.net uten å skjønne hvordan jeg skal sette opp dette.. $filen = "yeti1/liste.dat"; $f = fopen($filen, "r"); while ( $line = fgets($f, 1000) ) { $data = explode("|", $line); echo "Navn: $data[0] poeng: $data[1]"; } filen som det hentes data fra inneholder data på denne måten (liste.dat): navn1|1234 navn2|872.8 navn3|8992.1 jeg vil sortere slik at den personen med høyest poengsum står øverst.. Endret 17. februar 2008 av andrlan
Flin Skrevet 17. februar 2008 Skrevet 17. februar 2008 (endret) sort() Har du sett på den? Da må du vel kanskje endre litt på den løkken din. $score["'".$data[0]."'"] = $data[1]; Kan du bruke tror jeg, bare legg den til i løkken din så bruker du sort() på $score. Tror det skal funke. Endret 17. februar 2008 av Hjelpphp
andrlan Skrevet 17. februar 2008 Forfatter Skrevet 17. februar 2008 sort() Har forsøkt å bruke sort() men skjønner ikke hvordan jeg skal sette det inn i scriptet.. forslag?
andrlan Skrevet 17. februar 2008 Forfatter Skrevet 17. februar 2008 (endret) sort()Har du sett på den? Da må du vel kanskje endre litt på den løkken din. $score["'".$data[0]."'"] = $data[1]; Kan du bruke tror jeg, bare legg den til i løkken din så bruker du sort() på $score. Tror det skal funke. Forsøkte her nå slik, men det funker ikke: <?php echo "<table width='100' height='100%' align='center'>"; $filen = "yeti1/liste.dat"; $f = fopen($filen, "r"); while ( $line = fgets($f, 1000) ) { $data = explode("|", $line); $score["'".$data[0]."'"] = $data[1]; sort($score); echo "<tr><td align='left'><font size='2'>$score[0]:</font></td><td align='right'><font size='2'>$score[1]</font></td></tr>"; } echo"</table>"; ?> resultatet ble: 1162.3 : 1162.3 : 269.6 dette ligger i fila liste.dat: navn|1162.3 navn|269.6 Endret 17. februar 2008 av andrlan
Flin Skrevet 17. februar 2008 Skrevet 17. februar 2008 (endret) Rar dobbel post, med samme innlegg tre ganger i ett. Endret 17. februar 2008 av Hjelpphp
Flin Skrevet 17. februar 2008 Skrevet 17. februar 2008 (endret) $filen = "yeti1/liste.da"; $f = fopen($filen, "r"); while ( $line = fgets($f, 1000) ) { $data = explode("|", $line); $a = $data[1]; $score[$a] = $data[0]; } asort($score, SORT_NUMERIC ); echo "<pre>"; print_r($score); echo "</pre>"; Tror det vil fungere ganske bra.. EDIT : En linje som ikke hørte hjemme der. EDIT2 : Legger med en løkke til å skrive ut resultatet. foreach ($score as $k => $v) { echo $v . " : " . $k. "<br>"; } Kan bruke den istede for print_r. Endret 17. februar 2008 av Hjelpphp
andrlan Skrevet 17. februar 2008 Forfatter Skrevet 17. februar 2008 (endret) Dette ble output: Array ( [269.6 ] => admin [1162.3 ] => André ) Endret 17. februar 2008 av andrlan
Flin Skrevet 17. februar 2008 Skrevet 17. februar 2008 Prøv med den redigerte versjonen, jeg drev å rota litt. Beklager. Hvis det løser seg legg til [LØST] i tittelen.
andrlan Skrevet 17. februar 2008 Forfatter Skrevet 17. februar 2008 Prøv med den redigerte versjonen, jeg drev å rota litt. Beklager.Hvis det løser seg legg til [LØST] i tittelen. Dette ble output: Array ( [269.6 ] => admin [1162.3 ] => André )
Flin Skrevet 17. februar 2008 Skrevet 17. februar 2008 (endret) Sikker på at du bruker den siste jeg la ut? jeg får nemmelig det til å funke. Mekke en test fil og jeg får ut. navb : 125 navnw : 124 navn : 123 $filen = "yeti1/liste.dat"; $f = fopen($filen, "r"); while ( $line = fgets($f, 1000) ) { $data = explode("|", $line); $a = $data[1]; $score[$a] = $data[0]; } asort($score, SORT_NUMERIC ); foreach ($score as $k => $v) { echo $v . " : " . $k. "<br>"; } Endret 17. februar 2008 av Hjelpphp
andrlan Skrevet 17. februar 2008 Forfatter Skrevet 17. februar 2008 Flotters nå ser det bedre ut , men feil rekkefølge? Mulig det blir kluss siden jeg har punktum i poengene? admin : 269.6 André : 1162.3
Flin Skrevet 17. februar 2008 Skrevet 17. februar 2008 (endret) $filen = "./liste.txt"; $f = fopen($filen, "r"); while ( $line = fgets($f, 1000) ) { $data = explode("|", $line); $a = $data[0]; $score[$a] = $data[1]; } arsort($score, SORT_NUMERIC); foreach ($score as $k => $v) { echo $k . " : " . $v. "<br>"; } Sånn, beklager rot. Endret 17. februar 2008 av Hjelpphp
Jonas Skrevet 17. februar 2008 Skrevet 17. februar 2008 arsort() Sorterer i motsatt rekkefølge. Du burde strengt tatt klare å finne slikt på egenhånd. Det linkes alltid til relevante funksjoner på php.net.
andrlan Skrevet 17. februar 2008 Forfatter Skrevet 17. februar 2008 $filen = "./liste.txt";$f = fopen($filen, "r"); while ( $line = fgets($f, 1000) ) { $data = explode("|", $line); $a = $data[0]; $score[$a] = $data[1]; } arsort($score, SORT_NUMERIC); foreach ($score as $k => $v) { echo $k . " : " . $v. "<br>"; } Sånn, beklager rot. Kjempemessig!! Nå fungrerer det som smurt. Takker og bukker for hjelpen!
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå