array sortieren

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

  • array sortieren

    Ich möchte ein Array sortieren und
    zwar soll nach der neusten PHP-Version sortiert werden.

    z.B.
    Code:
    $php_versionen = array(
                            "4.0.4",
                            "4.0.5",
                            "4.0.4pl1",
                            "4.0.0rc3",
                            "4.1.1",
                            "3.1.8",
                            "4.0b"
    );
    rsort($php_versionen);
    reset ($php_versionen);
    while (list ($key, $val) = each ($php_versionen)) {
        echo "Version[".$key."] = ".$val."<br>\n";
    }
    ergibt:

    Version[0] = 4.1.1
    Version[1] = 4.0b
    Version[2] = 4.0.5
    Version[3] = 4.0.4pl1
    Version[4] = 4.0.4
    Version[5] = 4.0.0rc3
    Version[6] = 4.0.0

    führt aber leider nicht zum gewünschten Ergebnis

    richtig wäre:

    Version[0] = 4.1.1
    Version[1] = 4.0.5
    Version[2] = 4.0.4pl1
    Version[3] = 4.0.4
    Version[4] = 4.0.0
    Version[5] = 4.0.0rc3
    Version[6] = 4.0b

    Das Problem sind die Patch Levels (pl), Release Candidates (rc) und Betaversionen.

    Hat jemand da eine gute Idee?



  • #2
    Ersetzen des "." durch ein ASCII-Zeichen dessen Dezimalwert größer ist als die üblichen Zeichen und mit PHP keine Troubles macht. Aus den Zeichen "{", "|", "}", "~" bietet sich dafür "~" an:

    Code:
    <?
    $php_versionen = array(
                            "4~0~0",
                            "4~0~4",
                            "4~0~5",
                            "4~0~4pl1",
                            "4~0~0rc3",
                            "4~1~1",
                            "3~1~8",
                            "4~0b"
    );
    
    rsort($php_versionen);
    reset ($php_versionen);
    while (list ($key, $val) = each ($php_versionen)) {
        echo "Version[".$key."] = ".ereg_replace("~",".",$val)."<br>\n";
    }
    ?>
    Ergebnis:

    Version[0] = 4.1.1
    Version[1] = 4.0.5
    Version[2] = 4.0.4pl1
    Version[3] = 4.0.4
    Version[4] = 4.0.0rc3
    Version[5] = 4.0.0
    Version[6] = 4.0b
    Version[7] = 3.1.8

    Du hast in deinem Sample
    Version[4] = 4.0.0
    Version[5] = 4.0.0rc3

    ich glaub das gehört umgedreht, oder die Sortierreihenfolge
    Version[2] = 4.0.4pl1
    Version[3] = 4.0.4
    stimmt nicht

    Ich glaub wie Du den "." gegen "~" ersetzt weißt Du ohnehin

    Kommentar


    • #3
      Die Reihenfolge war schon richtig:

      Version[0] = 4.1.1
      Version[1] = 4.0.5
      Version[2] = 4.0.4pl1
      Version[3] = 4.0.4
      Version[4] = 4.0.0
      Version[5] = 4.0.0rc3
      Version[6] = 4.0b

      4.0.4pl ist nach 4.0.4 erschienen. (daher patch level 1)

      und 4.0.0rc3 (release candidate 3) ist eine pre-release von 4.0.0

      Kommentar

      Lädt...
      X