![]() |
Mit PHP Array sotieren
Hallo,
gibt es in PHP eine fertige Funktion mit dem ich folgenden Array sotieren kann. $Array["Name"]["Punkte"] Der Array soll nach den Punkten sotiert werden, also zum Beispiel aus Alex 10 Mike 20 Toni 5 Susi 14 soll dann Mike 20 Susi 14 Alex 10 Toni 5 werden. |
Re: Mit PHP Array sotieren
sort() bzw usort()
|
Re: Mit PHP Array sotieren
Die Mehrdimensionalität deiner Definition sehe ich im Beispiel jetzt nicht, aber allgemein: einfach mal auf de.php.net gehen und nach "array sorting" suchen ;)
Dann findest Du z.B. ![]() ![]() |
Re: Mit PHP Array sotieren
Hallo,
also ich blicke bei PHP noch nicht ganz durch :wall: Ich versuche gerade meine eigene Funktion zu schreiben, die das ganze sotieren soll. Hier mein PHP Source:
Code:
Wobei die Datei Eventpunkte.ini so aufgebaut ist:
<html>
<head> </head> <body> <? function swap_zwei_dim_array($pos1,$pos2, &$INI) { $Temp=$INI; $INI["Eventpunkte"][$pos1."P"]=$Temp["Eventpunkte"][$pos2."P"]; $INI["Eventpunkte"][$pos2."P"]=$Temp["Eventpunkte"][$pos1."P"]; $INI["Eventpunkte"][$pos1."N"]=$Temp["Eventpunkte"][$pos2."N"]; $INI["Eventpunkte"][$pos2."N"]=$Temp["Eventpunkte"][$pos1."N"]; } // Lade INI $INI = parse_ini_file("Eventpunkte.ini", true); $Anzahl=$INI["Eventpunkte"]["UserAnzahl"]; // Sotieren for ($i=1; $i<$Anzahl-1; $i++) for ($i2=$Anzahl-1; $i2>=$i; $i2--) if ($INI["Eventpunkte"][$i2."P"] < $INI["Eventpunkte"][($i2+1)."P"]) swap_zwei_dim_array($i2, $i2+1, $INI); // Ausgeben echo "Eventpunkte\n"; echo "<table>\n"; echo "<td>\n\n"; for($i=1; $i<$Anzahl+1; $i++) echo sprintf("%02d",$i).". ".$INI["Eventpunkte"][$i."N"]." \n"; echo "</td>\n\n"; echo "<td>\n"; echo " \n"; echo "</td>\n\n"; echo "<td>\n\n"; for($i=1; $i<$Anzahl+1; $i++) echo "".$INI["Eventpunkte"][$i."P"].""." \n"; echo "</td>\n"; echo "</table>\n\n"; ?> </body> </html>
Code:
[Eventpunkte]
UserAnzahl=10 1N=Ferby 1P=20 2N=Begonia 2P=10 3N=Lovemydoom 3P=5 4N=Shimiru 4P=4 5N=Durkhoom 5P=3 6N=Saliva 6P=2 7N=Berdugo 7P=1 8N=Saruelron 8P=5,5 9N=Lizinia 9P=1,5 10N=Bloodmira 10P=18 Das Programm sotiert teilweiße, allerdings enstehen immer wieder Fehler... Wenn ich an den Weten etwas änder, dann passt es manchmal, und manchmal nicht. Leider finde ich meinen Fehler nicht. Blickt hier wer soweit durch, das er den Fehler findet? |
Re: Mit PHP Array sotieren
Hat hier wirklich keiner eine Idee wo sich der Fehler eingeschlichen haben könnte?
|
Re: Mit PHP Array sotieren
Warum benutzt du nicht einer der oben genannten Funktionen? Ein Bubblesort ist nicht gerade für seine Schnelligkeit bekannt und ein selbstgeschriebener, schlecht optimierter und fehlerhafter erst recht nicht.
|
Re: Mit PHP Array sotieren
Hallo,
weil ich das mit den oben gennanten Funktionen nicht hinbekomme.... habe schon gegoogelt, aber sogut wie alle Funktionen, die ich gefunden habe, Funktionieren nicht mit einen 2-Dimensionalen Array, bzw sind zu komplex für mich. Bubbelsort mag zwar nicht gerade die beste sein, ist aber die einfachste. Und da ich noch ein PHP Newb bin, würde ich gerne die Funktion verstehen die ich benütze. |
Re: Mit PHP Array sotieren
puhh... Also du würdest uns das Leben leichter machen, wenn du einmal
print_r($<array to sort>); machst, dir den Quelltext im Browser ansiehst (damit die Zeilenumbrüche und Einrückungen noch da sind) und hier reinpostest. Ich bin mir näcmlich immernoch nicht im klaren, wie deine Datenstruktur aussieht und was sortiert werden soll ;-). |
Re: Mit PHP Array sotieren
Sortiere erst alle Teil-Arrays durch und dann sortiere das Haupt-Array mit usort, wobei du den höchsten Wert der Subarrays vergleichst:
Code:
EDIT: ups, Denkfehler. So funktioniert das natürlich nicht.
$foo sei ein 2-dimensionales Array
function cmparray($a, $b) { return ($a[sizeof($a)-1]<$b[sizeof($b)-1])?-1:($a[sizeof($a)-1]>$b[sizeof($b)-1])?1:0; } //... for ($i=0; $i<sizeof($foo)); $i++) { sort($foo[$i]); } usort($foo, cmparray); |
Re: Mit PHP Array sotieren
evtl. bringt dich das ja weiter:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz