Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] usort mehrere sachen sortieren lassen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] usort mehrere sachen sortieren lassen

    hallo,

    ich habe mein problem mit usort gelöst.

    PHP-Code:
    // Name absteigend
    function name_absteigend($a$b)
    {
        return (
    $a == $b strcmp($b['vorname'], $a['vorname']) :   strcmp($b['nachname'], $a['nachname']));
    }

    if(
    $_GET['sortierung'] == "absteigend" && $_GET['spalte'] == 'name')
    {
        
    usort($personen_test,name_absteigend);

    das funktioniert so weit.

    die anderen spalten gehen auch alle so.

    jetzt möchte ich aber, das er z.B. bei der anzahl der verwendungen der personen nach der anzahl sortiert, und wenn welche die gleiche anzahl haben, dann nach nachname/vorname.

    da habe ich gedacht:

    PHP-Code:
    // Anzahl Verwendungen absteigend
    function anzahl_verwendungen_absteigend($a$b)
    {
        return (
    $a['anzahl_verwendungen'] > $b['anzahl_verwendungen']) ? -1;
    }

    if(
    $_GET['sortierung'] == "absteigend" && $_GET['spalte'] == '1')
    {
        
    // erst nach name
    usort($personen_test,name_absteigend);
    // dann nach der anzahl
        
    usort($personen_test,anzahl_verwendungen_absteigend);

    die ersten beiden reihenfolgen werden richtig angezeigt, die anderen nicht mehr.
    muss ich evtl. eine funktion machen, wo beides drin vorkommt? das habe ich noch nicht gesehen.

    hat jmd. einen lösungsvorschlag?

    danke.

  • #2
    Zitat von Dintar1989 Beitrag anzeigen
    muss ich evtl. eine funktion machen, wo beides drin vorkommt?
    Natürlich.

    Du willst einen Vergleich machen, der ggf. auf zwei nacheinander ausgewerteten Kriterien basiert.
    Zwei mal nacheinander zu sortieren ist hingegen Unfug, weil dir die zweite Sortierung dann die erste wieder kaputt macht.
    [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

    Kommentar


    • #3
      diese funktion habe ich gefunden:

      PHP-Code:
      function _cmp ($a$b
      {    
         if ( 
      $a[5] == $b[5] )
         {     
              if (
      $a[6] == $b[6]) 
                  return 
      0;
              else
                 return ( 
      $a[6] < $b[6] ) ? -: +1;
          }
          else
              return ( 
      $a[5] < $b[5] ) ? -: +1;

      aber ich habe ka, wie ich da die anderen sachen einbauen soll.

      habe 3 sachen, die ich abfragen muss. oben sind das ja nur 5 und 6.
      ich habe aber: anzahl, nachname, vorname

      hast du dafür eine lösung? bin schon am rum probieren, nur das bringt nichts.

      Kommentar


      • #4
        Zitat von Dintar1989 Beitrag anzeigen
        diese funktion habe ich gefunden:
        Hör auf mit dem Suchen und Finden irgendwelcher Funktionen, die du nicht verstehst.

        aber ich habe ka, wie ich da die anderen sachen einbauen soll.
        Ist dir das Prinzip klar, wie das Sortieren mittels usort funktioniert, insb. was die Vergleichsfunktion angeht?
        Wenn nicht oder wenn du dir nicht sicher bist - informiere dich.

        hast du dafür eine lösung? bin schon am rum probieren, nur das bringt nichts.
        Fertige Lösung auf dem Silbertablett gibt's nicht.

        Wenn du das Prinzip verstanden hast, dann musst du nur noch die Anforderung
        jetzt möchte ich aber, das er z.B. bei der anzahl der verwendungen der personen nach der anzahl sortiert, und wenn welche die gleiche anzahl haben, dann nach nachname/vorname.
        in passenden Code für eine Vergleichsfunktion umsetzen.

        Das ist wirklich nicht besonders schwierig. Also zeig bitte mal etwas mehr Eigeninitiative.
        [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

        Kommentar


        • #5
          Überhaupt drängt sich der Verdacht auf, dass die Daten aus einer Datenbank kommen und der Sortiervorgang dort besser aufgehoben wäre.
          [COLOR="#F5F5FF"]--[/COLOR]
          [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
          [COLOR="#F5F5FF"]
          --[/COLOR]

          Kommentar

          Lädt...
          X