Gå til innhold

[LØST] Sortere en array


Anbefalte innlegg

Skrevet (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 av andrlan
Videoannonse
Annonse
Skrevet (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 av Hjelpphp
Skrevet (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 av andrlan
Skrevet (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 av Hjelpphp
Skrevet
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é

)

Skrevet (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 av Hjelpphp
Skrevet

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

Skrevet (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 av Hjelpphp
Skrevet
$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!

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...