Variablen sortieren
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
array
ausgabe
code
datei
datenbank
datum
ende
http
jemand
ordern
point
punkt
reihenfolge
schleife
sortieren
speichern
stadt
steige
tip
url
-
Ich stehe, wie sollte es auch anders sein, vor einem Problem und bräuchte mal
einen Tip wie ich das am besten machen kann.
Es geht um diese foreach Schleife, der ein oder andere kennt Sie ja schon :)
foreach ($xml_meine_bande->gang->member_list->member as $member_meine) { $userid = $member_meine->id; $punkte = $xml_user->user->points; $xml_user = simplexml_load_file("http://www.{$stadt}.pennergame.de/dev/api/user.{$userid}.xml"); echo $xml_user->user->name, " | ", $xml_user->user->points, "<br>"; }
Die Schleife läuft wie gewünscht und liefert die Daten Sortiert nach der Reihenfolge
der ID´s.
Ich ermittel hier eine ID in einer XML Datei$userid = $member_meine->id;
Hier gebe ich die ermittelte ID an einen Link weiter um so Daten aus einer weiteren XML Datei abzurufen.
{$userid}
Derzeit werden die Informationen in Reihenfolge der ermittelten ID´s angezeigt,
ich möchte nun die Reihenfolge anhand der ermittelten Werte anordnen
Also bei der eigentlichen Ausgabe am Ende.
echo $xml_user->user->name, " | ", $xml_user->user->points, "<br>";
Kann ich einfach mit der nächsten Schleife in die bereits vorhanden foreach weiter machen?
Per Google finde ich dazu immer nur nen
und nearray
while schleife
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Das vorhaben lässt sich nur über XML umsetzen, anders bekomme ich die Daten nicht, und die Daten sind halt "Live" und bei jedem Aufruf anders.
-
Speicher die Daten in einem Hilfsarray und lasse es darüber sortieren. Du kannst auch die Daten in eine MySQL Datenbank speichern und über einen MySQL Befehl sortieren mit order by.
-
Hi,
ich hatte leider die letzte Woche keine Zeit für´s Hobby, nun siehts wieder etwas besser aus und ich würde gern das Thema noch mal aufrollen.
Ich habe es nun über ein Hilfsarray Probiert, die Daten werden zwar ausgegeben, bleiben aber unsortiert. Es sieht aus als wenn das ksort() einfach übergangen wird. Vielleicht sieht ja jemand was ich da falsch mache.
Hier mal der aktuelle Code:
foreach ($xml_meine_bande->gang->member_list->member as $member_meine) { $userid = $member_meine->id; $xml_user = simplexml_load_file("http://www.{$stadt}.pennergame.de/dev/api/user.{$userid}.xml"); $daten_user = $xml_user->user->points; $daten = array("$daten_user"); ksort($daten); print($daten[0]); echo "<br>"; }
Bei der Ausgabe werden wie gesagt alle Daten gezeigt, nur die Sortierung klappt nicht.
print($daten[0]); echo "<br>";
Hab schon alle "Arten" von
getestet, ohne Erfolg.sort
Schöne Woche euch erst mal noch.
LG Marco
-
$tmpArr = array(); foreach ($xml_meine_bande->gang->member_list->member as $member_meine) { $userid = $member_meine->id; $xml_user = simplexml_load_file("http://www.{$stadt}.pennergame.de/dev/api/user.{$userid}.xml"); $tmpArr[ $xml_user->user->name . $userid ] = array( "id" => $userid , "name" => $xml_user->user->name , "points" => $xml_user->user->points ); } ksort( $tmpArr ); foreach( $tmpArr as $arr ) { echo $arr["name"] . " | " . $arr["points"] . "<br/>"; }
So schon versucht?
So packst du alle Daten in ein Temporäres Array. Die Keys des Arrays entsprechen den Usernamen + ID, da ein Username vllt doppelt vorkommen darf, und man so dann anhand der UserID diese Mehrfacheinträge behandelt. Dann wird mittels ksort das Array sortiert. Zum schluss gehen wir das nun sortierte Objekt durch und geben es aus, wie du möchtest.
Vllt passts ja.
Liebe Grüße -
Mit sort() kannst du nur eindimensionale Arrays sortieren. Ich denke du hast aber ein mehrdimensionales Array:
http://php.net/manual/de/function.array-multisort.php -
Also so wie ggamee es vorgeschlagen hat geht es, nun wird die Ausgabe nach den Namen sortiert.
Doppelte Namen gibt es nicht, jeder Name kann nur einmal vorhanden sein in den XML Dateien.
So ganz steige ich da jetzt aber nicht hinter, hab gerade schon bissl rumgetestet.
An welcher Stelle wird nun festgelegt wonach er sortiert?
Also derzeit wird Alphabetisch nach den Namen Ausgegeben, ich möchte nun nach den Punkten sortieren.
Ansonsten ist es genau das was ich wollte.
Ist sicher eine total bescheuerte Frage, sorry schon mal :)
-
In dem Link von hm4-blog steht alles drin was du benötigst. Wenn du ein wenig runter scrollst ist dort ein gutes Beispiel (das mit der Band).
-
Ok, ich werd mir das mal genauer anschauen, irgendwie muss das ja auch in meinen Kopf gehen. Generell sollte ich mir wohl aber überlegen,die Daten doch in eine DB zu speichern und von dort weiter zu verarbeiten.
Falls jemand nen Tipp hat wie ich die Daten am einfachsten aus dem Temporären Array
in meine DB speicher, dann immer her damit, da ich noch am Anfang des Projekts bin Frage ich lieber mal nach, bevor ich am Ende wieder den falschen Weg gehe.$tmpArr
Am Ende sollen verschiedene Punktebereiche vergeben werden und die User dazu angeordnet werden.
Wäre jetzt zu viel das genau zu Erklären, es sind aber viele verschiedene "Sortierungen" die ich am Ende mit den
Daten machen möchte.
Danke schon mal für die Tipps und Links bis hier.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage