kostenloser Webspace werbefrei: lima-city


Variablen sortieren

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    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
    array
    und ne
    while schleife
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Wie wärs, wenn du dir ne MySQL Datenbank zulegst ?
    Du kannst MySQL mit
    ORDER BY
    nähmlich genau
    sagen, nach welcher Spalte du wie sortieren magst.
  4. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    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.
  5. h******g

    Du kannst die Werte doch einfach in ein Hilfsarray speichern. Dieses mit sort() sortieren und dann ausgeben.
  6. 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.
  7. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    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
    sort
    getestet, ohne Erfolg.

    Schöne Woche euch erst mal noch.
    LG Marco

  8. g****e

    $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
  9. h******g

    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
  10. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    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 :)

  11. 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).
  12. Autor dieses Themas

    aff3m1tw4ff3

    aff3m1tw4ff3 hat kostenlosen Webspace.

    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
    $tmpArr
    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.

    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.
  13. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!