Da li je ovo moguće?
Naime, pravim neku hall of fame listu ali bez baze podataka (sa bazom bih završio bez ikakvih problema). Evo kako sam ja to uradio:
Imam fajl rezultati.txt u kojem su zapisani razultati u formatu:
igrač:brojpoena
Znači:
Citat:
Avram:10000
Avram:9000
Avram:8000
Avram:7000
Avram:6000
Avram:5000
Avram:4000
Avram:3000
Avram:2000
Avram:1000
|
Sada treba napraviti da, kada se doda novi igrač sa recimo 5500 poena, on upadne između Avram:6000 i Avram:5000 a da Avram:1000 nestane sa liste.
Evo šta sam do sada uradio:
Kôd:
<?php
$lista = file('rezultati.txt');
$element = 'Nemanja:5500'; //ovo je samo za test
$delovi = explode(':',$element);
$imence = $delovi[0];
$poencici = $delovi[1];
$mojniz = array();
foreach ($lista as $stavka) {
$p = explode(':',$stavka);
$mojniz[trim($p[1])] = trim($p[0]);
}
$mojniz[$poencici] = $imence;
krsort($mojniz,SORT_NUMERIC);
print_r($mojniz);
?>
Ovo radi lepo, na kraju dobijem niz tipa:
Citat:
Array
(
[10000] => Avram
[9000] => Avram
[8000] => Avram
[7000] => Avram
[6000] => Avram
[5500] => Nemanja
[5000] => Avram
[4000] => Avram
[3000] => Avram
[2000] => Avram
[1000] => Avram
)
|
Lako ću da uzmem prvih 10 i da zapišem nazad u fajl. Međutim, problem je kada dođe sledeći igrač sa brojem poena koji već postoji u listi, npr:
Pera:5500 - u tom slučaju se ne dodaje novi element 5500 => Pera već mi prepiše postojeći 5500 => Nemanja sa ovim novim 5500 => Pera, što je i logično, ali ja bih hteo da u ovom slučaju to ne radi tako.
Ili mi je možda pristup skroz pogrešan?