Sort() Fehler

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

  • Sort() Fehler

    Hy,

    ich hab mit folgendem Script n Problem :

    PHP-Code:
    <?php
    $dateiname
    ="list.txt";
    $lines=file($dateiname);
    $num=sizeof($lines);
    for (
    $i=count($lines)-1$i>=0$i--)
    {
    {
    $zeile explode('|'trim($lines[$i]));
    }
    }
    ?>
    <h2>Sortierte Liste</h2>
    <?php
    $file 
    file("list.txt");
    foreach(
    $file as $line)
    {
        
    $line chop($line);
        list(
    $punkte,$name,$verein,$liznr)=explode(":",$line);
        
    $liste[] = array($punkte,$name,$verein,$liznr);
    }
    sort($liste);

    foreach(
    $liste as $line)
    {
        
    // $line ist ein Array mit den oben genannten Elementen (PLZ,Stadt,Name,Email,Sonstwas)
        
    echo "Platz: $line[0]<br>\n";
        echo 
    "<hr>\n\n";
    }
    ?>
    Jetzt wird nach eintrag $punkte sortiert. Wenn jetzt aber die Punktezahl einmal 3 stellig ist und bei nem anderen 4 stellig, dann sortiert er mir nach der ersten zahl. Spricher sortiert mit nicht nach der größe der zahl, sondern nach der ersten zahl. Beispiel :
    1000
    777
    1200
    888
    sortiert er mir folgendermaßen
    1000
    1200
    777
    888
    Sieht die datei so aus
    1000
    0777
    1200
    0888
    sortiert er mir richtig.
    wie kann ich jetzt das problem umgehen, das er mir einfach nach der größe der zahl sortiert? ich hoffe es kommt verständlich rüber

    hogl

  • #2
    das sieht so aus, dass du diese zahlen als text gespeichert hast. im array ist dies dann auch nur ein text und wird somit als solcher auch sortiert.

    du musst das mal als zahl ins array holen. (int)$varname kann da helfen.

    auch kannst du mal versuchen SORT_NUMERIC als 2. parameter zu wenden. aber das hast du ja bereits im manual gelesen, bevor du hier gepostest hast. oder?
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      ahb ich gelesen...aber als nicht PHP crack weiss ich noch nicht mit dem parameter sort_flags und sort_numeric umzugehen

      Kommentar


      • #4
        deutsch kannst du doch. oder?

        was verstehst du dann an ... SORT_NUMERIC - Vergleiche Einträge [color=red]numerisch[/color] ... nicht?
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          damit meinte ich eigentlich eher, wohin die befehle setzten, aber sorry das ich geragt hab

          Kommentar


          • #6
            dann lies die meinen vorletzen post noch einmal langsaaaaam durch. sorry, dass ich dich mir einer lösung langweile.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              OK OK, ich muss mich jetzt wirklich entschuldigen. Ist schon klar das auf deine weise der "Lerneffekt" wesentlich größer ist, als wenn du die fertige lösung postest. ich hoffe du kannst mir verzeihen *aufdiekniefall*
              Sorry nochma

              Hogl

              Kommentar


              • #8
                ich poste in den seltensten fällen eine fertige lösung. wie du schon erkannt hast, lernt man so besser und denkt ein wenig selber nach.

                es sei dir also verziehn'. nur überlege dir beim nächsten mal, was du sagst, wenn dir jemand hilft. und lies die posts immer genau durch.
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  noch ne frage, wie dreh ich jetzt die sortier reihenfolge um? jetzt sortiert er mir von der kleinen zahl zur großen, wie mach ich jetzt von der großen zur kleinen??

                  Kommentar


                  • #10
                    arsort()...ich trottel

                    Kommentar


                    • #11
                      probier mal anschliessend ein array_reverse()
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar


                      • #12
                        Original geschrieben von Hogl
                        arsort()...ich trottel
                        oder so...
                        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                        Kommentar


                        • #13
                          noch was,

                          PHP-Code:
                          <h2 align=center>Sortierte Liste</h2>
                          <hr>
                          <?php
                          $file 
                          file("list.txt");
                          foreach(
                          $file as $line)
                          {
                              
                          $line chop($line);
                              list(
                          $punkte,$name,$verein,$liznr,$kat)=explode("|",$line);
                              
                          $liste[] = array((int)$punkte,$name,$verein,$liznr,$kat);

                          }
                          arsort ($liste);
                          foreach(
                          $liste as $line)
                          for (
                          $x=1;$x<count($liste);$x++){
                              echo 
                          '<body bgcolor="#ffffff">
                                  <div align=center>

                                      <table border="1" cellpadding="0" cellspacing="2">
                                          <tr>
                                              <td width="45">
                                                  <div align=left>
                                                      '
                          .$x.'</div>
                                              <td width="45">
                                                  <div align=left>
                                                      '
                          .$line[3].'</div>
                                              </td>
                                              <td width="150">
                                                  <div align=left>
                                                      '
                          .$line[1].'</div>
                                              </td>
                                              <td width="40">
                                                  <div align=right>
                                                      '
                          .$line[0].'</div>
                                              </td>
                                              <td width="60">
                                                  <div align=left>
                                                      '
                          .$line[4].'</div>
                                              </td>
                                              <td width="190">
                                                  <div align=left>
                                                      '
                          .$line[2].'</div>
                                              </td>
                                          </tr>
                                      </table>'
                          ;
                          }
                          echo 
                          "<hr>";
                          ?>
                          das script zählt jeden eintrag 3 mal. warum das?
                          Zuletzt geändert von Hogl; 23.11.2003, 18:35.

                          Kommentar


                          • #14
                            hab jetzt keine lust deinen code zu analysieren.

                            schaue mal drüber, und erkenne, was dein code macht. und vergleiche das mit dem, was du machen willst...
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar


                            • #15
                              vermutlich weil du
                              PHP-Code:
                              foreach (...) {
                                 for(
                              $i= ...) {
                                    ....
                                 }

                              entweder das eine (foreach) oder das andere (for), aber bestimmt nicht beides.

                              Kommentar

                              Lädt...
                              X