kostenloser Webspace werbefrei: lima-city


Sortier-Problem in PHP / Arrays

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    frankgo

    frankgo hat kostenlosen Webspace.

    Ich komme nicht weiter...
    scheinbar bin ich zu Dumm zu kapieren, was ich brauche :biggrin:

    Also folgendes Problem:
    Ich ermittele in einer gro?en, ca. 1000x durchlaufenen Schleife Daten.
    Diese m?ssen sortiert werden. .. aber ich bekomme es nicht sinnvoll hin.

    Als Beispiel:
    Fu?ball-Liga.

    $durchgang =1;
    while(....)
    {
    // Folgende Daten werden ermittelt:
    $Ligacode = X; // 1 oder 2 oder 3...... bis 20.
    $Liganamen = X; // der vollst?ndige Liganamen.
    $Tore = X; // halt soviele Tore, wie geschossen wurden.
    $Mannschaftscode = X; // ein interner 5stelliger Code.
    $Mannschaftsnamen = X; // halt der Name der Mannschaft.

    // ?bergabe in ein Array
    $Uebergabe[$durchgang] = array($Ligacode, $Tore, $Liganamen, $Mannschaftscode, $Mannschaftsnamen);

    $durchgang = $durchgang +1;
    }

    // Hinter der Schleife, die die Daten ermittelt will ich die gesammelten Daten sortieren und ausgeben. Sortiert werden soll nach:
    $Ligacode
    //und innerhalb des gleichen Liga-Codes noch zus?tzlich nach:
    $Tore
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. cracy-fighters

    cracy-fighters hat kostenlosen Webspace.

    Ich nehme an dass du die Daten mit einer MYSQL-Anfrage abholst.

    Dann w?re die Einfachste Methode einfach die Daten bereits in der mysql-query sortieren zu lassen. So in der Art:

    $sql = "SELECT * FROM tabelle ORDER BY ligacode AND tore DESC";
    $qry = mysql_query($sql);
    while($row = mysql_result($qry))
    {
    //* Dann eben die Daten ermitteln *//

    // ?bergabe in ein Array
    $Uebergabe[$durchgang] = array($Ligacode, $Tore, $Liganamen, $Mannschaftscode, $Mannschaftsnamen);

    $durchgang = $durchgang +1;
    }

    Das sollte gehen (vorrausgesetzt du benutz mysql, sonst ist der post zu meinem Bedauern ?berfl?ssig -.-)

    --> Keine Gew?hr *g* Nur son Gedanke <--
  4. Autor dieses Themas

    frankgo

    frankgo hat kostenlosen Webspace.

    :biggrin::biggrin: Leider war Deine Hilfe umsonst. :biggrin::biggrin:

    Zwas benutze ich SQL um Daten abzufragen, aber diese Daten muss ich aufwendig aus etlichen SQL-Abfragen, die "wenn X zutrifft dann Abfrage Y nehmen" herausfiltern.

    Die Daten selbst kann ich -je Durchgang- beliebig bearbeitern.
    Ein Array ist da kein Muss.

    Nur m?ssen diese Daten, je Schleifendurchgang gesichert werden.

    Da sonst, wenn meine gro?e Schleife rund 1000x durchl?uft die Variablen ?berschrieben werden.

    Defakte ist das mit dem Sortieren mein Hauptproblem.
    Hier habe ich einfach keinen brauchbaren Denkansatz, das umzusetzen.
  5. Googlen und finden ;)

    "rsort -- Sortiert ein Array in umgekehrter Reihenfolge"

    "sort -- Sortiert ein Array"

    Von: http://de.php.net/sort

    Musst auf der Seite gucken, wie genau du das bei dir benutzen musst.
  6. Hallo frankgo!

    Ich hole das jetzt alles mal aus meinem Ged?chtnis. N?heres m?sste aber unter
    http://www.php.net/
    zu finden sein.

    Ein gro?es Array mit 1000 Datens?tzen, die wiederum selbst Arrays darstellen, soll sortiert werden. Jede ordentliche Programmiersprache (also auch PHP) hat eine benutzerdefinierbare Sortierfunktion. Dort kann eine selbstgeschriebene Vergleichsroutine angegeben werden, die daf?r sorgt, dass die Sortierfunktion "richtig" sortiert. Dein Problem ist die Sortierung von "zusammengesetzten" Datentypen (ARRAY of ARRAYs). Also musst du dir einige Beispiel-Datens?tze hernehmen und eine Funktion schreiben, die je zwei Datens?tze vergleicht. Dabei k?nnen 3 Zust?nde auftreten: DS1 < DS2, DS1 > DS2, DS1 == DS2. Diese m?ssen einen bestimmten R?ckgabewert der Funktion zur Folge haben, meist: -1, 0, +1. Ich wei? das von Perl und C, bei PHP kam ich noch nicht in die Verlegenheit, sowas zu schreiben. Daher schlie?e ich mich meinem Vorposter an:

    http://www.php.net/ aufrufen, und nach sort() oder rsort() in der Funktionensuche schauen. Dort m?sste was dar?ber stehen.

    EDIT:
    So, und damit sich keiner wundert, der vielleicht versucht, meinen Tipps zu folgen:
    Die PHP-Funktion, die ich meinte hei?t: usort():
    http://www.php.net/manual/de/function.usort.php

    MfG
    alopex
  7. Autor dieses Themas

    frankgo

    frankgo hat kostenlosen Webspace.

    DAS war mir bekannt.
    Das Problem lag aber auf anderer Seite.


    Es ist inzwischen gel?st.
    Man darf NICHT, so wie ich es wollte:
    $Uebergabe[$durchgang] = array($Ligacode, $Tore, $Liganamen, $Mannschaftscode, $Mannschaftsnamen);

    Sondern kann so zum Ziel kommen:
    Zuerst das jeweilige vor der gru?en Schleife erstellen und dann:

    array_push($ALLE_Ligacodes, $Ligacode);
    array_push($ALLE_Tore, $Tore);
    array_push($ALLE_Liganamen, $Liganamen);
    array_push($ALLE_Mannschaftscodes, $Mannschaftscode);
    array_push($ALLE_Mannschaftsnamen, $Mannschaftsnamen);


    HINTER der Schleifen:
    array_multisort ($ALLE_Ligacodes, SORT_ASC, $ALLE_Tore, $ALLE_Liganamen, $ALLE_Mannschaftscodes, $ALLE_Mannschaftsnamen);

    Dann ist alles wunschgem?? sortiert und ich bin gl?cklich.
  8. 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!