Sortieren - Ich raff's nich

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

  • Sortieren - Ich raff's nich

    Ahoi!

    Ich würde gerne ein mehrdimensionales Array sortieren aber irgendwie will das Teil nicht wie ich wohl will. Hier ein Beispielscript:

    PHP-Code:
    // Array aufbauen
        
    $a['name'][0]="August";
        
    $a['f1'][0]="0";
        
    $a['a'][0]="a";

        
    $a['name'][1]="Lala";
        
    $a['f1'][1]="1";
        
    $a['a'][1]="b";

        
    $a['name'][2]="Bärtram";
        
    $a['f1'][2]="2";
        
    $a['a'][2]="c";

        
    $a['name'][3]="Zeppelin";
        
    $a['f1'][3]="3";
        
    $a['a'][3]="d";
        
    // Array sortieren
        
    array_multisort($a['name']);

    // Array ausgeben
        
    for($i=0;$i<count($a['name']);$i++)
            echo 
    $a['name'][$i].' '.$a['f1'][$i].' '.$a['a'][$i].'<br>'
    Als Ergebnis bekomme ich hier:

    August 0 a
    Bärtram 1 b
    Lala 2 c
    Zeppelin 3 d

    Ich hätte aber gerne, dass folgendes rauskommt:

    August 0 a
    Bärtram 2 c
    Lala 1 b
    Zeppelin 3 d

    Also dass der jeweils zweite und dritte Wert abhängig vom ersten Wert mitsortiert wird. Kann mir jemand sagen, wie ich das bewerkstellige?

    Danke im vorraus!!

    Gruss

    Yezariel
    mens agitat molem

  • #2
    du sortierst wohl nur den namen
    so geht das aber nicht

    Kommentar


    • #3
      Hi!

      Schlaues Kind! Und wie könnte ich das lösen? Man muss doch irgendwie multidimensionale Arrays sortieren können, oder?
      mens agitat molem

      Kommentar


      • #4
        Versuche es mal so:
        PHP-Code:
        array_multisort($a); 
        Mein Ergebnis:
        OffTopic:

        August 0 a
        Lala 1 b
        Bärtram 2 c
        Zeppelin 3 d

        mfg
        Günni


        Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
        Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
        Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
        City-Tiger - Online durch die Straßen tigern...

        Kommentar


        • #5
          Vielleicht hilfts ja wenn ich beschreibe für was ich das brauche.
          Also.
          Ich habe 2 mysql-Tabellen, die inhaltsmäßig ähnliche Felder haben. Nehmen wir mal an, in beiden Tabellen gibt es Adressen. Die Felder der Tabellen haben aber unterschiedliche Namen.

          Ich muss jetzt aus beiden Tabellen die Adressen auslesen, die ausgelesenen Daten dann z.B. nach PLZ sortieren und das ganze dann so ausgeben, als kämen die Daten aus einer einzelnen Tabelle.
          Ich lese also zuerst die erste mysql-Tabelle und schreibe alle benötigten Felder in ein Array und zwar so:

          PHP-Code:
                  while($mak1=$db->fetch_array($mq)){
                      
          $makler[id][$i]=$mak1[u_id];
                      
          $makler[firma][$i]=$mak1[u_firma];
                      
          $makler[name][$i]=$mak1[u_name];
                      
          $makler[strasse][$i]=$mak1[u_strasse];
                      
          $makler[plz][$i]=$mak1[u_plz];
                      
          $makler[ort][$i]=$mak1[u_ort];
                      
          $makler[telefon][$i]=$mak1[u_telefon];
                      
          $makler[fax][$i]=$mak1[u_fax];
                      
          $makler[email][$i]=$mak1[u_email];
                      
          $i++;
                  } 
          Anschliessend lese die Daten aus der 2. Mysql-Tabelle und hänge sie quasi hinten an das Array an und zwar so:

          PHP-Code:
                  while($mak=$db->fetch_array($m2q)){
                      
          $makler[id][$i]=$mak[id];
                      
          $makler[firma][$i]=$mak[firma];
                      
          $makler[name][$i]=$mak[vorname]." ".$mak[name];
                      
          $makler[strasse][$i]=$mak[strasse];
                      
          $makler[plz][$i]=$mak[plz];
                      
          $makler[ort][$i]=$mak[ort];
                      
          $makler[telefon][$i]=$mak[telefon1];
                      
          $makler[fax][$i]=$mak[telefax];
                      
          $makler[email][$i]=$mak[email];
                      
          $i++;
                  } 
          Tja, und dann möchte ich halt das Array, in dem jetzt die Daten einfach hintereinander hängen z.B. nach plz sortieren.
          Das muss doch irgendwie gehen, oder?

          Danke

          Gruss

          Yezariel
          mens agitat molem

          Kommentar


          • #6
            Lies mal hier nach http://www.php.net/manual/de/functio...-multisort.php hier steht alles wie dies funzt...
            mfg
            Günni


            Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
            Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
            Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
            City-Tiger - Online durch die Straßen tigern...

            Kommentar


            • #7
              @Günni: Manchmal ist das Online-Handbuch doch besser als die runtergeladene .chm-Hilfe... VIELEN DANK!!! Ich hab dort die Lösung gefunden. Für alle die's interessiert:

              After a long search, I have finally found the way to a sort mulit-dimensional array by one of its columns.

              If you have the following array:
              $data_array["FirstName"][0] = "John";
              $data_array["FirstName"][1] = "Marta";
              $data_array["FirstName"][2] = "Trent";
              $data_array["LastName"][0] = "Lin";
              $data_array["LastName"][1] = "Tremblay";
              $data_array["LastName"][2] = "Nguyen";
              $data_array["Extension"][0] = 5555;
              $data_array["Extension"][1] = 2222;
              $data_array["Extension"][2] = 3333;

              and wanted to sort by the column, "Extension", in ascending order to output the following:

              FirstName LastName Extension
              Marta Tremblay 2222
              Trent Nguyen 3333
              John Lin 5555

              use:

              array_multisort($data_array["Extension"], SORT_NUMERIC, SORT_ASC, $data_array["FirstName"],$data_array["LastName"]);

              Note: If you have more columns, list them at the end.
              mens agitat molem

              Kommentar


              • #8
                Du musst dir nur immer die aktuelle chm datei downloaden, dann passt es.
                mfg
                Günni


                Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
                Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
                Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
                City-Tiger - Online durch die Straßen tigern...

                Kommentar


                • #9
                  Das ist schon klar, aber die ganzen Userkommentare stehen da halt nicht drinne und dort hab ich ja die Lösung gefunden.
                  mens agitat molem

                  Kommentar

                  Lädt...
                  X