Array sortieren :)

ThE_eDdA

Grünschnabel
Hio,

also ich habe folgendes Problem, ich code gerade ein lifestats script für gameserver (gibt es on mass aber jeder hat seinen eigenen geschmack :) )
so ich habe also ein array mit dem namen:

Code:
$this->playerinfo[$usr]["frags"]

welches mir die frags des jeweiligen users ausgibt.wenn ich einfach alle user ausgeben lasse sieht das so aus:

Code:
<table width=500>
<tr>
<td>&nbsp;</td>
<td>Name</td>
<td>Frags</td>
<td>Spielzeit</td>
</tr>
<?php
$anzahl = $this->serverinfo["players"] - 1;

for($usr = 0; $usr <= $anzahl; $usr++)
{
if(!$this->playerinfo[$usr]["name"])
{
	$this->playerinfo[$usr]["name"] = "?";
}
$nummer = $usr + 1;
?>
<tr>
<td>
<td>playerinfo[$usr]["name"]; ?> 
<td>playerinfo[$usr]["frags"]; ?> 
<td>playerinfo[$usr]["time"]; ?> 
</tr>
<?php
}
?>
</table>

so dann werden mit alle spieler nach ihrer id ausgegeben, also so wie im hlsw auch.
jetzt möchte ich aber, dass der der am meisten frags hat oben steht.

was tun sprach zeus :)

bin für jede hilfe dankbar
 
hab ich schon probiert, aber ich check das nicht. kannst mir mal nen beispiel schreiben?
aber ich mein das ding sortiert einfach nur mehrere arrays auf einmal, aber ich hab halt nur das eine also das mit den frags
 
Zuletzt bearbeitet:
ja aber das ding sortiert nur mehrere arrays auf einmal ich möchte aber nur mein eines array sortieren, weiß aber nicht wie.
 
ThE_eDdA hat gesagt.:
ja aber das ding sortiert nur mehrere arrays auf einmal ich möchte aber nur mein eines array sortieren, weiß aber nicht wie.

Hallo,
aber bei Beispiel 2 heißt es doch:

php.net hat gesagt.:
Beispiel 2. Sortieren eines mehrdimensionalen Arrays

Hier das Beispiel:

PHP:
<?php
$ar = array (array ("10", 100, 100, "a"), array (1, 3, "2", 1));
array_multisort ($ar[0], SORT_ASC, SORT_STRING,
				 $ar[1], SORT_NUMERIC, SORT_DESC);
/*
In diesem Beispiel enthält das erste Array nach dem Sortieren
10, 100, 100, "a" (wurde als Strings in aufsteigender Reihenfolge
sortiert), und das zweite enthält 1, 3, "2", 1 (numerisch und
absteigender Reihenfolge sortiert).
*/
?>

mfg
forsterm
 
Zuletzt bearbeitet:
evtl hilft auch das hier:

PHP:
 //nach Namen sortieren
 if ( $sort == 1 ) {
 	function comparar($a, $b) {
 	   return strnatcasecmp($a[0], $b[0]);
 		}
 	usort($set, "comparar"); 
 	session_register(set);
 	}
 
hi,

nein leider hat mir das auch nicht weiter geholfen.
mein problem ist halt, dass ich die frags ja auch in einem einfachen array speichern könnte und das sortieren könnte und ausgeben könnte, aber dann passt das nicht mehr mit den usern. also dann haben die verschiedenen player alle falsche stats.

naja dann lass ichs halt so oder hat noch einer andere vorschläge?!
 
Schau Dir die Funktionen in der Referenz mal an an, dann wirst Du feststellen, dass [phpf]uasort[/phpf] im Gegensatz zu [phpf]usort[/phpf] die Assoziationen zwischen Schlüssel und Wert beibehält. Das benötigst Du , da die ID des Users bei Dir ja augenscheinlich den Key darstellt. Weiterhin hat resterampe als Kommentar extra nach Namen sortieren geschrieben. Wenn Du dann mit der Funktionsreferenz Dir den Code anschaust, könnte Dir auffallen, dass die 0 in seinem Code auf das Arrayelement 0 in zweiter Ebene Deines Arrays zugreift. Interessant wäre auch, wenn Du Deinen aktuellen Code zeigst und sagst, was nicht wie gewünscht funktioniert. Mit ein bisschen Nachdenken könnte man zu folgendem Code kommen (und unter Umständen ist auch der nicht eins zu eins zu kopieren und Du musst Dir wenigstens überlegen, wo Du den Code einsetzt):
PHP:
function comparar($a, $b) {
    return strnatcasecmp($a["frags"], $b["frags"]);
}
uasort($set, "comparar");

Wenn Du die Reihenfolge der Keys änderst und diese Integer sind, musst Du auch mit [phpf]foreach[/phpf] durch das Array gehen, um es auszugeben, und nicht mit einer einfachen for-Schleife.

Gruß hpvw
 
Zurück