Datei sortieren

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

  • Datei sortieren

    So, ich hab jetzt massig Google-Seiten durchgewälzt und 'zig Foren durchsucht und nicht das gefunden, was ich will.

    Ich lese also eine Datei in ein Array und will dieses Array sortieren lassen. Jeder wird mir jetzt sagen mit sort() ganz einfach.

    Aber ich möchte es so sortieren, wie es normalerweise auch im Duden stehe würde, also Groß- und Kleinbuchstaben gemixt und Zahlen da davor.

    Jede Sortier-Funktion, die ich bisher genutzt habe, macht das entweder zuerst Sonderzeichen, dann Zahlen, dann Groß-Buchstaben und dann Klein-Buchstaben.
    Oder in umgekehrter Reihenfolge.

    Aber ich will es so:
    "anders" kommt dann eben vor "Andreas", aber nach "Anden"
    wie eben ein Duden (kennt ja wohl jeder)

  • #2
    schon probiert: http://de3.php.net/manual/en/function.natcasesort.php

    Kommentar


    • #3
      also in der Beschreibung steht zwar, dass es normal sortiert werden "sollte" aber es wird stattdessen gar nicht sortiert.

      bzw. es wird falsch sortiert

      zum sortieren:
      Code:
      Andreas
      ARD
      Markus
      Bert
      bernd
      robert
      Tonne
      heinz
      "sortiert":
      Code:
      ARD 
      Andreas 
      Bert 
      Markus 
      Tonne 
      bernd 
      heinz 
      robert
      Zuletzt geändert von TheRealDarklord; 01.02.2005, 23:42.

      Kommentar


      • #4
        ich weiß nicht was du hast, aber bei mir sieht so aus:
        PHP-Code:
        <?php
        $array1 
        $array2 = array("anders""Andreas""Anden");

        sort($array1);
        echo 
        "Standard sorting\n<pre>";

        print_r($array1);

        natcasesort($array2);
        echo 
        "\nNatural order sorting\n";
        print_r($array2);
        echo 
        '</pre>';
        ?>
        Output
        Code:
        Standard sorting
        
        Array
        (
            [0] => Anden
            [1] => Andreas
            [2] => anders
        )
        
        Natural order sorting
        Array
        (
            [2] => Anden
            [0] => anders
            [1] => Andreas
        )
        
        oder
        
        Standard sorting
        
        Array
        (
            [0] => ARD
            [1] => Andreas
            [2] => Bert
            [3] => Markus
            [4] => Tonne
            [5] => bernd
            [6] => heinz
            [7] => robert
        )
        
        Natural order sorting
        Array
        (
            [0] => Andreas
            [1] => ARD
            [4] => bernd
            [3] => Bert
            [7] => heinz
            [2] => Markus
            [5] => robert
            [6] => Tonne
        )
        Zuletzt geändert von asp2php; 01.02.2005, 23:47.

        Kommentar


        • #5
          so hab ichs
          Code:
          //lexikon.mop inhalt
          Andreas
          ARD
          Markus
          Bert
          bernd
          robert
          Tonne
          heinz
          1
          BERT
          
          //index.php inhalt
          <?php
          $all=file("lexikon.mop");
          sort($all);
          for($i=0;$i<count($all);$i++)
          	echo$all[$i]."<br>";
          ?>
          und das bekomm ich zu sehen
          Code:
          1 
          ARD 
          Andreas 
          BERT
          Bert 
          Markus 
          Tonne 
          bernd 
          heinz 
          robert
          Zuletzt geändert von TheRealDarklord; 01.02.2005, 23:55.

          Kommentar


          • #6
            du verwendest die Funktion natcasesort ja garnicht

            Kommentar


            • #7
              sorry, ich habs grade gemerkt, es kommt trotzdem das hierbei raus:
              Code:
              Andreas 
              ARD 
              Markus 
              Bert 
              bernd 
              robert 
              Tonne 
              heinz 
              1 
              BERT
              ist also völlig unsortiert
              exakt wies in der datei steht

              Kommentar


              • #8
                willst du damit sagen, dass ich den Output von mir manipuliere?

                Kommentar


                • #9
                  willst du damit sagen, ich manipuliere meinen?

                  nein, im ernst ich will hier nix wem unterstellen
                  ich will nur wissen, wie das klappt was ich machen will, oder besser:
                  wieso das nicht klappt, was du mir vorgeschlagen hast

                  Kommentar


                  • #10
                    sorry für den doppelpost:

                    ich weiß worans liegt, aber ich weiß nich wie ichs umgehe

                    es liegt daran, dass natcasesort das array nicht neu schreibt, also die indexes neu verteilt, so wie es sortiert wäre

                    siehe dein output
                    er zeigt zwar das letzte feld als erstes an, aber mit dem ursprünglichen indexwert, sodass ich es nicht per for-schleife ausgeben kann, wie ich es hatte

                    ich muss also irgendwie eine neuzuweisung der indexes hinbekommen
                    keine ahnung wie und keine ahnung ob mich wer verstanden hat

                    Kommentar


                    • #11
                      seufz
                      PHP-Code:
                      foreach ($array2 as $s) echo $s.'<br />'

                      Kommentar


                      • #12
                        dankeschön, es klappt nun
                        aber da ich das nicht gleich ausgeben kann, sondern noch weiter verarbeiten will, schreib ichs damit in ein neues (nun sortiertes) array

                        Kommentar

                        Lädt...
                        X