Mehrdimensionales Array sortieren

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

  • Mehrdimensionales Array sortieren

    Hallo Leute,

    wie sortiere ich denn ein mehrdimensionales Array?

    Also ich habe ein Array $meinarray[] welches in der zweiten Ebende $meinarray[][0] einen Timestamp enthält. Wie sortiere ich jetzt das ganze Array nach den Einträgen in $meinarray[][0] ?

    Dank & Grüße,
    Andi

  • #2
    array_multisort
    (PHP 4 )

    array_multisort -- Sortiert mehrere oder multidimensionale Arrays
    Beschreibung
    bool array_multisort ( array ar1 [, mixed arg [, mixed ... [, array ...]]])


    array_multisort() wird zum Sortieren von entweder mehreren Arrays auf einmal, oder eines multidimensionalen Arrays (entsprechend einer von mehreren Dimensionen) benutzt. Bei der Sortierung werden die Schlüsselassoziationen beibehalten.

    Die angegebenen Arrays werden als Spalten einer Tabelle behandelt, welche nach Reihen sortiert werden - ähnlich der SQL Klausel ORDER BY. Das erste Array ist auch das erste in der Sortierreihenfolge. Die in diesem Array gleichen Zeilen (Werte) werden anhand des nächsten angegebenen Arrays sortiert, usw.

    Die Struktur der Argumente ist etwas ungewöhnlich, aber flexibel. Das aller erste Argument muss ein Array sein. Die nachfolgenden Argumente können entweder ein Array oder eines der folgenden Sortierflags sein.

    Flags für Sortierreihenfolge:


    SORT_ASC - sortiere in aufsteigender Reihenfolge

    SORT_DESC - sortiere in absteigender Reihenfolge


    Flags für Sortiertypen:


    SORT_REGULAR - vergleiche Felder normal

    SORT_NUMERIC - vergleiche Felder numerisch

    SORT_STRING - vergleiche Felder als Strings


    Es kann nur ein Sortierflag des selben Typs nach jedem Array spezifiziert werden. Sortierflags nach einem Array Argument gelten nur für dieses Array, und werden vor jedem neuen Array Argument zu den Defaultflags SORT_ASC und SORT_REGULAR zurückgesetzt.

    Gibt bei Erfolg TRUE zurück, im Fehlerfall FALSE.

    Beispiel 1. Sortieren mehrerer Arrays
    PHP-Code:
    $ar1 = array ("10"100100"a");
    $ar2 = array (13"2"1);
    array_multisort ($ar1$ar2); 


    In diesem Beispiel enthält das erste Array nach dem Sortieren 10, "a", 100, 100. Das zweite Array wird 1, 1, "2", 3 enthalten. Die Einträge des zweiten Arrays, welche den identischen Einträgen des ersten Arrays entsprechen (100 und 100) wurden ebenfalls sortiert.

    Beispiel 2. Sortieren eines mehrdimensionalen Arrays
    PHP-Code:
    $ar = array (array ("10"100100"a"), array (13"2"1));
    array_multisort ($ar[0], SORT_ASCSORT_STRING,
                     
    $ar[1], SORT_NUMERICSORT_DESC); 


    In diesem Beispiel enthält das erste Array nach dem Sortieren 10, 100, 100, "a" (wurde als Strings in aufsteigender Reihenfolge sortiert), und das zweite enthält 1, 3, "2", 1 (numerisch und absteigender Reihenfolge sortiert).
    tata
    moqui

    [COLOR=red]Ich will keine unaufgeforderten Mails über PHP Fragen. Es gibt ein Forum hier! Und ich bin nicht Scripter für jeden, der mir ne Mail schreibt![/COLOR]

    Kommentar


    • #3
      Hui, bisschen verzwickt, aber ich habs hinbekommen.
      Zumindest die einfache Variante für meine Zwecke.

      Danke

      Kommentar


      • #4
        [Funktion] hilfe, kapier das einfach nicht

        Könnte jemand mir die oben zitierte Erklärung aus dem PHP-Manual anders und verständlicher erklären?

        Ich kapier die Beispiele einfach nicht und wäre SEHR dankbar für leichteres Anschauungsmaterial.

        Danke!!!

        a.h.l.

        Kommentar


        • #5
          Re: [Funktion] hilfe, kapier das einfach nicht

          Original geschrieben von ahl
          Könnte jemand mir die oben zitierte Erklärung aus dem PHP-Manual anders und verständlicher erklären?
          was ist daran unverständlich?
          Die angegebenen Arrays werden als Spalten einer Tabelle behandelt, welche nach Reihen sortiert werden - ähnlich der SQL Klausel ORDER BY. Das erste Array ist auch das erste in der Sortierreihenfolge. Die in diesem Array gleichen Zeilen (Werte) werden anhand des nächsten angegebenen Arrays sortiert, usw.
          besser ausdrücken lässt es sich doch wohl kaum.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            repeat: wäre dankbar für anderes beispiel

            wahsaga, wozu gibt's denn die foren, eh?? doch nicht um newbies zu beleidigen.

            also nochmal: ich verstehe die beispiele nicht vom php manual. wäre wirklich dankbar für eines, das griffiger ist.

            konkret: ich will ein multidimensionales array sortieren. momentan habe ich:

            $news = array ([0]=>array('category'=>'1','item'=>'foo'),
            [1]=>array('category'=>'10','item'=>'foo'),
            [2]=>array('category'=>'11','item'=>'foo'),
            [3]=>array('category'=>'2','item'=>'foo'),
            [4]=>array('category'=>'4','item'=>'foo'))

            was ich will, ist dass das array nach 'category' neu sortiert wird, nachdem alle categories mit settype() zu integers umgestellt werden, falls nötig. derzeit sind die categories aus anderen gründen strings und kommen so alphabetisch sortiert als ergebnis der mysql-abfrage

            a.h.l.

            Zuletzt geändert von ahl; 18.06.2003, 09:29.

            Kommentar


            • #7
              Re: repeat: wäre dankbar für anderes beispiel

              Original geschrieben von ahl
              doch nicht um newbies zu beleidigen.
              wer wurde denn wo beleidigt ...?
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar

              Lädt...
              X