Ankündigung

Einklappen
Keine Ankündigung bisher.

eigenes Array sortieren???

Einklappen

Neue Werbung 2019

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

  • eigenes Array sortieren???

    hab nen array wie folgt:

    eintraeg=array(
    12.04.2005=>"text",
    20.08.1955=>"text",
    10.06.1988=>"text",);

    nun würed ich das ganze gern nach den daten sortierfen hab schon extra ne funktion da für geschrieben aber klappen tut da nichts..

    Danke schon mal in voraus!


  • #2
    Dann solltest du wohl mal deine Funktion zeigen.

    Kommentar


    • #3
      zu befehl
      PHP-Code:
      <?php
      function down_cmp($a,$b)
      {
          if (
      $a $b) {
              return (
      $a<$b);
          }
          else {
              return 
      0;
          }
      }

      usort($eintraege"down_cmp");
      ?>
      hab das ganze auch schon in eine schleife gepackt so das usort so oft gemacht wir wie viele elemente im array sind, aber hilft leider auch nichts

      Kommentar


      • #4
        Klappt zwar zufällig, aber du meintest wohl eher "12.04.2005".
        12.04.2005 ist nämlich "12042005". Wenn du irgendwas sortierst, sollte das gröbste Element zuerst sortiert werden, danach die spezielleren Elemente. In deinem Fall musst du zuerst nach Jahr, Monat und dann Tag sortieren. Deshalb solltest du das Jahr auch vor den Monat und den Monat vor den Tag setzen, sprich dein Datumsformat sollte so aussehen.
        YYYY-MM-DD

        Kommentar


        • #5
          Zum Einen benötigst du zum benutzerdefiniertem Sortieren von assoziativen Arrays nach Schlüsseln uksort() statt usort() und zum Anderen kannst du Daten im deutschen Format nicht ohne weiteres Vergleichen. Hier ist eine Umwandlung in einen UNIX-Timestamp erforderlich.

          Kommentar


          • #6
            so hab nun folgendes format yyyymmdd

            beispiel: 20050611; 20040402; 20040502
            das sind meine schlüssel und nun möchte ich dies vom größten nach kleinsten sortieren...

            hab diese funktion:
            PHP-Code:
            function down_cmp($a,$b)
            {
                if (
            $a != $b) {
                    return (
            $a<$b);
                }
                else {
                    return 
            0;
                }

            aber klappen will dat ganze noch immer net[/code]

            hier mal ein richtigen auszugs meines array:
            Array ( [0] => Array ( [20040502] => text ) [1] => Array ( [20040402] => text ) [2] => Array ( [20050611] => text ) )[/php]

            Kommentar


            • #7
              Wenns deine Schlüssel sind reicht ja krsort().
              Schau dir doch im Manual sonst mal die zur Verfügung gestellten Sortier- und Arrayfunktionen an.

              Kommentar


              • #8
                ich erstelle hier mit das array:

                $eintraege[$i-1]=array(
                $vdate=>$inhalt);

                in einer schleife...

                kan man das nicht vieleicht vereinfachen z.b. so:

                $eintraege=arra<(
                $vdate=>$inhalt);

                aber wenn ich das so mache, dann überschreibt er mir in der schleife was ja schon drin ist, ergo bei jedem durchlauf soll das am ende rangehangen werden.

                Kommentar


                • #9
                  Sind deine $vdate Werte denn nur einmal vorkommende Daten, oder können da mehrere gleiche vorkommen?

                  Kommentar


                  • #10
                    eigentlich nur ein mal.... der zeit hab ich nun mir zwei arrays erstellt.. also eins mit den daten, dieses sortiere ich mit arsort und und müsste ich das zewite array dem ersten dessen rheinfolge anpassen...

                    oder hast du vielleicht eine einfache lösung?

                    Kommentar


                    • #11
                      $eintraege[$vdate]=$inhalt;

                      machich mir nun das array sieht dann so aus:

                      Array ( [20040502] => text [20040402] => text [20050611] => text )

                      jetzt wende ich arsort an und es kommt das:

                      Array ( [20050611] => text [20040402] => text [20040502] => text

                      wie man sieht stimmen die letzten beiden werte nicht, das letzte müsste vor dem zweiten kommen... was ist falsch

                      Kommentar


                      • #12
                        Warum ignorierst du meinen Vorschlag krsort()?

                        Kommentar


                        • #13
                          *Schäm* hatte wo anders nen fehler und wollte nicht gehen

                          nun macht alles genau das was es soll *hoff* noch ein paar testdaten erstellen...

                          auf alle fälle DANKE für deine gedult und Lösung!

                          Kommentar

                          Lädt...
                          X