php.test: natcasesort()

Hallo,

ich habe ein Array mit unterschiedlichen Werten die natürlich, und nicht case-sensitive, sortiert werden sollen. natcasesort() wäre dazu perfekt geeignet, jedoch funktioniert bei mir die Funktion einfach nicht !
Nachdem ich das zu sortierende Array an natcasesort() übergeben habe sieht es ganauso aus wie vorher. sort() funktioniert, sortiert jedoch nicht wie ich es brauche.
Auf selfphp steht, dass natcasesort seit PHP 4 >= 4.0RC2 unterstüzt wird, auf meiner Domain läuft PHP 4.1.1 - müsste also _eigentlich_ gehen. Kann mir da einer weiterhelfen??? :(

  1. natcasesort() wäre dazu perfekt geeignet, jedoch funktioniert bei mir die Funktion einfach nicht !

    Na sowas.

    Nachdem ich das zu sortierende Array an natcasesort() übergeben habe sieht es ganauso aus wie vorher. sort() funktioniert, sortiert jedoch nicht wie ich es brauche.

    Was soll denn überhaupt sortiert werden? "Funktioniert nicht" beschreibt Dein Problem nur reichlich wage. Wenn Dein Feld etwa so aussieht:

    1
      2
      10

    ist es jedenfalls kein Wunder, daß natcasesort() "nix" tut, sort() aber schon..

    Gruß,
      soenk.e

    1. Was soll denn überhaupt sortiert werden?

      Es sollen Strings (genauer: technische Bezeichungen) sortiert werden. Das Array hat z.B. folgende Werte:
      $arr[0] = "SMV5845748";
      $arr[1] = "smdd32";
      $arr[2] = "t_test";
      $arr[3] = "TTd-32";
      ...

      Folglich müsste natcasesort funktionierten.
      sort() kann ich nicht hernehmen, da es case-sensitive arbeitet.

      1. Was soll denn überhaupt sortiert werden?

        Es sollen Strings (genauer: technische Bezeichungen) sortiert werden. Das Array hat z.B. folgende Werte:
        $arr[0] = "SMV5845748";
        $arr[1] = "smdd32";
        $arr[2] = "t_test";
        $arr[3] = "TTd-32";
        ...

        Folglich müsste natcasesort funktionierten.

        Sortieren tut's, erwartest Du vielleicht einfach eine andere Sortierung?

        natcasesort:

        [1] => smdd32
              [0] => SMV5845748
              [3] => TTd-32
              [2] => t_test

        sort() kann ich nicht hernehmen, da es case-sensitive arbeitet.

        Du kannst stattdessen usort() in Verbindung mit strcasecmp() benutzen:

        usort($arr,"strcasecmp");

        ergibt folgendes:

        [0] => smdd32
            [1] => SMV5845748
            [2] => t_test
            [3] => TTd-32

        Gruß,
          soenk.e