Du solltest Dein Array anders aufbauen (und zwei Arrays daraus machen).
Ein Array für die "Stammdaten" (die kannst Du zur Not auch so lassen, das spart ggf. unnötige Variablenschiebereien), die Du oben in Deinem Code ausgibst und ein
2-Dimensionales Array für die Spielerdaten:
Ausserdem sollten die die String-Arrayindizes (z.B. hostname, CPU, numplayers in Hochkomma oder Anführungszeichen schreiben. So wie es jetzt ist, benutzt Du Konstanten, die nur, weil sie nicht definiert sind, dem String entsprechen, den Du haben willst. Wenn eine dieser Konstanten mal definiert wird oder dieses "Feature" in einer neueren PHP-Version wegfällt, kannst Du Deinen Code komplett neu schreiben.
Ein bisschen mehr Einrücken kann auch nicht schaden.
Statt
solltest Du
schreiben, das existiert auch vor PHP 4.1.0 schon.
Ich persönlich bevorzuge bei der Ausgabe, Variablen und feste Texte zu trennen, so dass auch in einem Jahr noch schnell auffällt, wo Variablen zu finden sind (Vorrausgesetzt ein Editor mit Syntaxhighlighting), also statt
kannst Du
Und ein letzter Hinweis: Wenn Du hier im Editor PHP-Code einfügst, kannst Du statt code in eckigen Klammer php in eckigen Klammern schreiben. Dann wird der Code entsprechend der Syntax hervorgehoben. Für html gilt das entsprechend, andere Sprachen glaube ich gibt es aber nicht.
Gruß hpvw
Ein Array für die "Stammdaten" (die kannst Du zur Not auch so lassen, das spart ggf. unnötige Variablenschiebereien), die Du oben in Deinem Code ausgibst und ein
2-Dimensionales Array für die Spielerdaten:
PHP:
//bis vor der Compare-Funktion so lassen,
//ausser das mit den Indizes, siehe Text nach
//dem Code
function cmp ($a, $b) {
if ($a["punkte"] == $b["punkte"]) return 0;
return ($a["punkte"] > $b["punkte"]) ? -1 : 1;
}
$stats = array();
for ($i = 0; $i < intval($bf["numplayers"]); $i++) {
$temp = array();
$temp["spieler"] = $bf["player_".$i];
$temp["punkte"] = $bf["score_".$i];
//Abgeschossen schreibt man mit ss
//Vorsichtshalber würde ich im Code
//auch keine Sonderzeichen verwenden
$temp["abgeschossen"] = $bf["frags_".$i];
$temp["gestorben"] = $bf["deaths_".$i];
$temp["ping"] = $bf["ping_".$i];
if ($bf["team_".$i] == 1) {
$temp["teamname"] = "Axys";
} else {
$temp["teamname"] = "Allieds";
}
//Das temp-Array wird als Element an das
//andere Array gehängt. Somit erhältst Du
//ein 2-dimensionales Array:
$stats[$i] = $temp;
}
usort($stats, "cmp");
foreach ($stats as $id => $playerstat) {
$spieler = $playerstat["player"];
$punkte = $playerstat["score"];
$abgeschossen = $playerstat["frags"];
$gestorben = $playerstat["deaths"];
$ping = $playerstat["ping"];
$teamname = $playerstat["teamname"];
//hier Deine Ausgabe,
//falls Du den ehemaligen
//index des Spielers benötigst,
//er steht in $id
}
Ein bisschen mehr Einrücken kann auch nicht schaden.
Statt
PHP:
array_key_exists("maxplayers", $bf)
PHP:
isset($bf["maxplayers"])
Ich persönlich bevorzuge bei der Ausgabe, Variablen und feste Texte zu trennen, so dass auch in einem Jahr noch schnell auffällt, wo Variablen zu finden sind (Vorrausgesetzt ein Editor mit Syntaxhighlighting), also statt
PHP:
echo "blabla $variable fester Text";
PHP:
echo "blabla ".$variable." fester Text";
Und ein letzter Hinweis: Wenn Du hier im Editor PHP-Code einfügst, kannst Du statt code in eckigen Klammer php in eckigen Klammern schreiben. Dann wird der Code entsprechend der Syntax hervorgehoben. Für html gilt das entsprechend, andere Sprachen glaube ich gibt es aber nicht.
Gruß hpvw