probleme mit sort()

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

  • probleme mit sort()

    Hallo zusammen.

    Ich habe ien Preblem, wenn ich sort auf einen zweidimensionalen Array anwende.

    Zuerst dachte ich, sort() sortiere dann einfach nach dem ersten Element im Array. Dem ist aber offensichtlich nicht so (ausser ich habe mich schwer verguckt).

    Problem: Im ersten Element steht ein Dateiname, im zweiten das Datum. Ich möchte das ganze nach dem Datum sortiert haben.

    Also habe ich denn Array umgemodelt und im ersten Element das Datum und im zweiten den Namen. sort() sortiert das Array aber weiterhin nach dem Namen.

    aufruf:
    PHP-Code:
    sort($array); 
    Kann mir da jemand helfen?

    danke
    muge

  • #2
    spiel dich mal mit array_multisort() oder, wenn alles nicht hilft: usort()

    btw: wie sehen deine daten aus ? string oder timestamp ?
    wenn du die als string drin stehen hast siehts schlecht aus .. php erkennt nicht automatisch dass es ein datum ist und wird demnach immer falsch sortieren
    mfg,
    [color=#0080c0]Coragon[/color]

    Kommentar


    • #3
      Original geschrieben von Coragon Rivito
      btw: wie sehen deine daten aus ? string oder timestamp ?
      wenn du die als string drin stehen hast siehts schlecht aus .. php erkennt nicht automatisch dass es ein datum ist und wird demnach immer falsch sortieren
      das dürfte wohl in erster linie vom datumsformat abhängen.
      YYYY-MM-DD z.b. eignet sich doch recht gut zum sortieren ...
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Arrays sortieren macht nicht wirklich Spass. Insbesondere multidimensionale Arrays können einem das Leben richtig schwer machen.

        In den User Contributed Notes habe ich eine sehr, sehr nette Funktion gefunden, die auch mehrdimensionale Arrays prima sortiert (Quicksort-Algorithmus). Ich verwende die jetzt immer und das klappt richtig prima.
        PHP-Code:
        function array_qsort(&$array$column=0$order=SORT_ASC$first=0$last= -2) {
            
        // $array  - the array to be sorted
            // $column - index (column) on which to sort
            //           can be a string if using an associative array
            // $order  - SORT_ASC (default) for ascending or SORT_DESC for descending
            // $first  - start index (row) for partial array sort
            // $last   - stop  index (row) for partial array sort
            
        if($last == -2$last count($array) - 1;
            if(
        $last $first) {
                
        $alpha $first;
                
        $omega $last;
                
        $guess $array[$alpha][$column];
                while(
        $omega >= $alpha) {
                    if(
        $order == SORT_ASC) {
                        while(
        $array[$alpha][$column] < $guess$alpha++;
                        while(
        $array[$omega][$column] > $guess$omega--;
                    } else {
                        while(
        $array[$alpha][$column] > $guess$alpha++;
                        while(
        $array[$omega][$column] < $guess$omega--;
                    }
                    if(
        $alpha $omega) break;
                    
        $temporary $array[$alpha];
                    
        $array[$alpha++] = $array[$omega];
                    
        $array[$omega--] = $temporary;
                }
                
        array_qsort($array$column$order$first$omega);
                
        array_qsort($array$column$order$alpha$last);
            }

        Ich denke, also bin ich.
        Manche sind trotzdem!

        Kommentar


        • #5
          Mein Tipp ... schau Dir usort() an ... und wenn Du schon mal da bist auch gleich noch uasort() und uksort() ... kann nie schaden ... !!
          carpe noctem

          [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
          [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

          Kommentar

          Lädt...
          X