misschien klinkt de vraag dom maar hoe sorteer ik de scores op hoogte, ik dacht dan aan sort();, maar als ik die voor de highscore doe blijven de namen van de spelers staan, dus komen ze niet bij de goede score te staan, dit is mijn script: Plaatscode: 64377
edit: plaatscode.be heeft iets gedaan met de backslashes waardoor de highlight niet goed loopt.
ik denk dat het het probleem is waar ik ksort() neerzet, btw, ik denk dat ik krsort moet gebruiken want het gaat van de hoogste score tot de laagste. dit is het voorbeeld: http://aardappelhoofd.nl/cod.php, misschien als je het voorbeeld ziet begrijp je beter wat ik bedoel.
edit: wat is er zo nutteloos aan mn hongaarse noteermethode
Ik ben benieuwd waarop jij überhaupt een sort hebt uitgevoerd. Dat is namelijk niet te doen zo. Je moet de gegevens per speler eerst in een array stoppen alvorens ze te printen, dan kun je op die array sorten.
Je doet sowieso een paar dingen in je code waar ik eigenlijk wel een beetje om moet lachen. Deze bijvoorbeeld:
Je krijgt nu een $sPlayers die precies hetzelfde is als $players. Bovendien geef je met je brakke hungarian notation aan dat het een string betreft, maar dat is niet eens zo.
Wilde het met \r\n niet ofzo, en dacht je het toen zo te doen? Als het eerste gewoon werkt heb je twee keer hetzelfde gedaan, hetzij je één keer nog een carriage return over blijft houden. Het leukste is nog dat je later $mod gaat overschrijven met $aArray[0], die twee zijn namelijk waarschijnlijk hetzelfde.
EDIT:
Citaat:
edit: wat is er zo nutteloos aan mn hongaarse noteermethode
Lees het artikel wat ik gaf eens. De prefix moet het soort aangeven van de waarde in de variabele, niet het type.
alle code die je nu opnoemt komen uit een andere topic en is heb ik dus niet geschreven en is dus ook niet mijn hongaarse notatie dus lach niet om mijn code, en idd ik had nog nooit van array_shift gehoord. en je hoeft je echt niet zo op een beginner los te laten. en plz beperk je ff tot het sorteren van de scores.
edit : ok, dan gebruik ik geen hongaarse notatie meer, sterker zoals ik al zei was het niet mijn notatie, kunnen we ons dan ff beperken tot het onderwerp 'scores op hoogte sorteren' i.p.v. hongaarse notatie
alle code die je nu opnoemt komen uit een andere topic en is heb ik dus niet geschreven en is dus ook niet mijn hongaarse notatie dus lach niet om mijn code, en idd ik had nog nooit van array_shift gehoord. en je hoeft je echt niet zo op een beginner los te laten. en plz beperk je ff tot het sorteren van de scores.
Dat het je eigen code is, maakt geen ruk uit voor de fouten die erin zitten. Als je code krijgt van een ander is het juist de bedoeling dat je die code goed gaat bestuderen om te weten te komen wat die code precies doet. Wat betreft de hungarian notation: Dat was niet om je af te kraken hoor.
Het sorteren van de scores is niet moeilijk, je moet de gegevens die je uit de $sPlayerExploded array haalt eerst even in een aparte array zetten, zonder ze te printen. Je kunt ze dan sorteren met k(r)sort().
kijk het zit zo, met sommige dingen in php ben ik niet zo goed, zoals sorteren, nu heb ik een aparte arary gepakt scores gesorteerd, maar hij geeft geen output, dit is de code (de fout zou waarschijnlijk echt vet dom zijn) Plaatscode: 64383
kijk het zit zo, met sommige dingen in php ben ik niet zo goed, zoals sorteren, nu heb ik een aparte arary gepakt scores gesorteerd, maar hij geeft geen output, dit is de code (de fout zou waarschijnlijk echt vet dom zijn) Plaatscode: 64383
Er is niets mis met fouten maken hoor, ik wilde ook de indruk niet geven dat ik je af wilde kraken (het lachen was met de beste bedoelingen hoor, ik vond het gewoon komisch).
Om even op de code terug te komen, je gaat hier de fout in:
Wat je hier doet, is een enkele score in een variabele zetten. Die variabele is op dat moment niet eens een array, dus sorteren gaat inderdaad niet werken.
Wat ik bedoel, is dat je buiten de for-loop een aantal arrays definiëert. In de for-loop zet je dan de scores en de namen etc. in die arrays. Je kunt dan de score-array krsorten, zodat je met de keys van de score array de andere gegevens op kunt vragen.
ik heb nu gedaan wat je zei: Plaatscode: 64387
maar de tabel blijft leeg.
Hmm, niet helemaal. Je moet $namen en $scores al definiëren voordat je aan de for-loop begint. Bovendien moet je in de for-loop niet al gaan printen, want pas als die af is ga je sorteren. Je moet het zo zien:
1) $namen en $rows definiëren
2) In de for-loop die je nu hebt doe je $namen[] = $sPlayersExploded[1]; en $scores[] = $sPlayersExploded[0];
3) Na de for-loop doe je krsort($scores);
4) Nu gebruik je de for-each om de boel te printen
Probeer zoiets eens in elkaar te zetten.
EDIT:
Om van dit probleem te leren is het handig om eens te kijken wat er precies gebeurd vanaf regel 43. Ga nou eens voor jezelf per regel na wat er precies gedaan wordt. Dan zie je de fout misschien ook sneller
// De namen- en score-array maken
$namen = array();
$scores = array();
// Loopen
for ($i = 0; $i < $iPlayers; $i++) {
// De gegevens van de huidige speler exploden
$playerData = explode(" ", $sPlayers[$i]);
// De naam exploden, dat moet blijkbaar
$naamData = explode('"', $playerData[2]);
// De naam aan de namen-array toevoegen
$namen[] = $naamData[1];
// De score aan de score-array toevoegen
$scores[] = $playerData[0];
}
// Nu hebben we twee arrays, namelijk $namen en $scores die we kunnen doorlopen
// Maar eerst gaan we sorteren op de scores
krsort($scores);
// We gaan ook nog een rank bijhouden
$rank = 1;
// Doorlopen en echo'en
foreach ($scores as $key => $score) {
echo "<tr><td>" . $rank . "</td><td>" . $namen[$key] . "</td><td>" . $score . "</td></tr>";
}
Ik heb nu de ping achterwege gelaten, maar daar zou je zelf uit moeten kunnen komen, je moet hem namelijk alleen maar toevoegen aan het begin, zorgen dat er gegevens ingestopt worden in de for-loop (dat ziet er hetzelfde uit als die van $namen en $scores) en printen in de foreach-loop.
Het (omgekeerd) sorteren op key lijkt me niet zo zinnig - het gaat om de values (de scores), ook is het verband met een speler weg?
Lijkt me een stuk handiger als je aangeeft wat je invoer + structuur van deze invoer (A) is, en wat je hier van wilt maken (B).
Anders is het vrij onmogelijk voor iemand om aan te geven hoe je van (A) naar (B) komt.
Blijkbaar zat ik verkeerd, ik was er van overtuigd dat krsort sorteerde met behoud van keys, niet op de keys. Dan moet er gewoon gebruik gemaakt worden van arsort.
Mijn excuses.
EDIT:
Ah, ik ben natuurlijk in de war geweest met arsort! Ik dacht aan de k van key zodat die behouden bleef, maar het gaat om de a van associatief om de key/value relatie te behouden.
ik denk dat de keys hier hetzelfde blijven ookal sort je de waardes, omdat je nergens eenv aste key waarde hebt gegeven. Die nummertjes ervoor zijn voor een user fijn, maar volgens mij zit dr geen link tussen de key en value. Mssn moet je hardcoded nummeren, mssn dat t dan wel lukt