Sortieren von mehrsimensionalen Arrays

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

  • Sortieren von mehrsimensionalen Arrays

    Hallo Forum,

    ich habe immer noch das gleiche Problem mit dem sortieren von mehrdimensionalen Arrays.

    Der Array besteht aus 3 Dimensionen:

    Preis - Beschreibung - ART

    12 blabla automatisch
    9 blablo manuell
    26 bliblum automatisch

    Nun möchte ich diesen Array sortieren. Als Ergebnis sollte folgendes rauskommen:

    9 blablo manuell
    12 blabla automatisch
    26 bliblum automatisch

    Mit array_multisort habe ich das probiert, aber dabei wird die Relation nicht beibehalten, als Ergebnis kommt dann:

    9 blabla automatisch
    12 blablo manuell
    26 bliblum automatisch

    Kann mir jemand helfen???

    Danke
    Ron

  • #2
    Du brauchst da auch kein Multisort

    einfach
    sort($array);

    fertig... Dein Array is sortiert
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      also mit dem sort() funktioniert das nicht. Die Relationen passen dann alle nicht mehr. Ich habe in einigen Büchern schon geschaut, aber keins schreibt was über das Sortieren von mehrdimensionalen Arrays, nur wie man die ausliest und erstellt und so weiter.

      Trotzdem Danke

      Gruss
      Ron

      Kommentar


      • #4
        $a[0]=array(12,"blabla","automatisch");
        $a[1]=array(9,"blablo","manuell");
        $a[2]=array(26,"bliblum", "automatisch");

        sort($a);

        Und raus kommt:
        9 blablo manuell
        12 blabla automatisch
        26 bliblum automatisch
        Beantworte nie Threads mit mehr als 15 followups...
        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

        Kommentar


        • #5
          Dein zu sortierender Array heisst $teilresultat, die $sortierart definiert, ob aufsteigend oder absteigend sortiert werden soll.
          Deine zu sortierende "Spalte" wird über den index x in $a[x] bzw. $b[x] definiert.
          Also wenn deine Arrayelemente z.B. $array[0]=array("alfa", "beta", "gamma") ist, dann sortiert $a[1] die "beta"-spalte


          reset($teilresultat);
          if ($sortierart=="aufst") {function cmp3 ($a, $b) { return strnatcmp ($b[7],$a[7]); }} //sortiert aufsteigend
          if ($sortierart=="abst") {function cmp3 ($a, $b) { return strnatcmp ($a[7],$b[7]); }} //sortiert absteigend
          usort ($teilresultat, 'cmp3'); // damit ist dein array sortiert

          Bei mir funktionierts jedenfalls
          mfg
          Zuletzt geändert von CHnuschti; 10.08.2002, 23:29.

          Kommentar

          Lädt...
          X