mehrdimensionales array sortieren

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

  • mehrdimensionales array sortieren

    Hallo,

    Ich habe ein Problem beim Sortieren eines Arrays.

    EDIT:
    code "übersprungen",
    wahsaga



    ich will das array $et_array nach dem 2. Bezeichner sortieren.
    wenn ich jetzt also folgendes habe:
    $et_array[1][20]=blabla20;
    $et_array[2][06]=blabla06;
    $et_array[3][08]=blabla08;
    $et_array[4][12]=blabla12;

    soll rauskommen:

    $et_array[1][06]=blabla06;
    $et_array[2][08]=blabla08;
    $et_array[3][12]=blabla12;
    $et_array[4][20]=blabla20;

    ist das möglich?
    hab schon vieles probiert aber komm einfach auf keinen grünen zweig
    das mit array_multisort versteh ich nicht so ganz, vermute aber auch dass es für meine zwecke nicht geeignet ist.

    Gruß
    Zuletzt geändert von wahsaga; 28.09.2006, 11:07.

  • #2
    Re: mehrdimensionales array sortieren

    Original geschrieben von kkohler
    Ich habe ein Problem beim Sortieren eines Arrays.
    Und wir eins mit deinem Posting - Regeln lesen, Code umbrechen.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      nagut den code kann im prinzip überspringen, wichtig ist nur das was darunter steht
      wollte damit nur veranschaulichen, dass sich mein array "dynmaisch" zusammenstellt und so nicht vorgegeben ist.

      Kommentar


      • #4
        Warum baust du's nicht so auf:

        $et_array[1][0] = array('et_num' => '20', 'name' => 'blabla20');
        $et_array[1][1] = array('et_num' => '06', 'name' => 'blabla06');
        $et_array[1][2] = array('et_num' => '08', 'name' => 'blabla08');
        $et_array[1][3] = array('et_num' => '12', 'name' => 'blabla12');


        Dann kannst du usort verwenden
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          weils ich´s ja nach der et_num sortieren will.
          und die usort funktionen sind mir etwas zu kompliziert?!

          hatte vorher einfach $et_array[$et_num] und hab das über ksort() sortiert, aber jetzt hab ich plötzlich doppelte $et_num Werte und da schluckt er mir immer einen...

          gruss

          Kommentar


          • #6
            Ist diese $et_num eindeutig?
            wie weit kennst du dich in PHP aus?

            wenn ja kannst du einfach $et_num als Key (nicht assoziativ) für dein
            Array (anstatt von $i) und gehtst dann das Array mit next() durch!

            dann sähe dein Array folgendermaßen aus:

            $et_array[6]=blabla06;
            $et_array[8]=blabla08;
            $et_array[12]=blabla12;
            $et_array[20]=blabla20;

            // EDIT ok ... du hast meine Frage schon beantwortet
            // war wohl zu langsam -.-

            in dem Fall würde ich das Array so aufbauen:

            $et_array[6][1]=blabla06;
            $et_array[8][1]=blabla08;
            $et_array[8][2]=blabla08;
            $et_array[12][1]=blabla12;
            $et_array[20][1]=blabla20;
            Zuletzt geändert von BLG; 28.09.2006, 10:40.

            Kommentar


            • #7
              PHP-Code:
              function do_comp($a$b) {
                if (
              $a['et_num'] < $b['et_num'])
                  return -
              1;
                return 
              1;
              }

              $et_array[] = array('et_num' => '20''name' => 'blabla20');
              $et_array[] = array('et_num' => '08''name' => 'blabla08');
              $et_array[] = array('et_num' => '06''name' => 'blabla06');
              $et_array[] = array('et_num' => '08''name' => 'blabla08');
              $et_array[] = array('et_num' => '12''name' => 'blabla12');


              echo 
              '<pre>'.print_r($et_arraytrue).'</pre>';

              usort($et_array'do_comp');

              echo 
              '<pre>'.print_r($et_arraytrue).'</pre>'
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                lass datenbank sortieren
                PHP-Code:
                SELECT artikel.*,preisgruppe.* FROM 
                artikel INNER JOIN preisgruppe 
                on preisgruppe
                .Preisgruppe=artikel.Preisgruppe
                WHERE basismodell
                ='$id' AND sprache='$et_sprache' 
                ORDER by ArtikelnummerSUBSTRING(preisgruppe.Artikelnummer,5,2)*
                Zuletzt geändert von Slava; 28.09.2006, 10:59.
                Slava
                bituniverse.com

                Kommentar


                • #9
                  Ich hätte da auch noch eine Frage:
                  Warum schreibst du alle deine Daten erst als String in die
                  Variable $arrayinhalt und splittest diese wiederum mit
                  explode()?
                  Es wäre doch wesentlich sinnfoller das Array
                  $et_row in das Array et_array zu schreiben, dann würde die
                  Variable $arrayinhalt und $et_data=explode(";",$value);
                  wegfallen!

                  Kommentar


                  • #10
                    @Slava: Du hast mir den richtigen Denkanstoß gegben.
                    Habe bei Erstellung des Scriptes schon gedacht dass ich eine Funktion bräuchte nach einem Teil der ANummer sortiert.
                    Eine Artikelnummer sieht bei mir nämlich folgendermaßen aus: 12345-10
                    Und es soll nach der Kennummer (im Beispielfall die 10) sortiert werden.

                    Wusste nicht dass das doch geht und musste deshalb meinen Code zu schlimm umbauen, so dass es nicht mehr funktinierte wenn eine Kennnummer doppelt war.
                    Jetzt funktioniert alles wunderbar so wie ich es mir vorgestellt habe.

                    Danke für die Hilfe aller,

                    Gruß

                    Kommentar


                    • #11
                      zum lesen:
                      http://www.mysql.org/doc/refman/4.0/...functions.html
                      Slava
                      bituniverse.com

                      Kommentar

                      Lädt...
                      X