Array sortieren ...

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

  • Array sortieren ...

    PHP-Code:
    <?

    $i=0;
    $extension = "txt";
    $handle=opendir ('engine/accounts/'); 
    while (false !== ($file = readdir ($handle))) {
        $expl = explode(".",$file);
        if ($expl[1] == $extension) {
        $i = $i + 1;
        include "engine/accounts/$file";
        $key= $siege;
        $array[$key] = $file;
        }
    }
    closedir($handle); 

    if ($i > 0) {
        sort($array);
        while (list ($key, $val) = each ($array)) {
            $expl = explode(".",$val);
            include "engine/accounts/$val";
            $val = substr($val,0,strlen($file)-4);
                print "<tr><td width=280 valign=top><font 
    face=verdana size=1 color=999999><b>$val</b> <font color=red>($siege 
    Siege)</td><td width=200 valign=top><div align=right><a 
    href=\"index.php?a=superstar&wname=$val\"><font face=verdana size=1
     color=999999><b>[Profil anzeigen]</A></td></tr>";
        }
    } else {
        print "Datenbank ist leer!";
    }
    ?>
    ich möchte gerne nach der variable $siege sortiert haben, irgendwie krieg ich das wohl nicht hin, bzw steh aufm schlauch, hat da wer nen denkanstoß

    relevanter code
    PHP-Code:
    include "engine/accounts/$file";
        
    $key$siege;
        
    $array[$key] = $file;
        }
    }
    closedir($handle); 

    if (
    $i 0) {
        
    sort($array); 

  • #2
    keiner ne lösung ?

    Kommentar


    • #3
      Original geschrieben von nicker
      keiner ne lösung ?
      ruhig bleiben, bitte.
      das hier ist kein 15-min-support.

      wenn du bis dahin noch keine antworten bekommen hast, frage bitte in ein paar tagen nochmal nach.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Mal sehen, generell sollte man bei der Sortierung von assoziativen Arrays asort nehmen, nicht einfach nur sort.

        Zudem ist es mir ein Rätsel, welchen Wert die Variable $siege haben soll? Schliesslich gibt die doch den Schlüsselwert, scheint mir aber nie irgendwo gesetzt zu werden....
        Happiness is an empty error log

        Kommentar


        • #5
          ich schau mal mit asort.

          der wert für $siege wird aus der vorher includierten datei gezogen

          Kommentar


          • #6
            hmm das will einfach nicht klappen

            PHP-Code:
            <?

            $i=0;
            $extension = "txt";
            $handle=opendir ('engine/accounts/'); 
            while (false !== ($file = readdir ($handle))) {
                $expl = explode(".",$file);
                if ($expl[1] == $extension) {
                $i = $i + 1;
                include "engine/accounts/$file";
                $key= $siege;
                $array[$key] = $file;
                }
            }
            closedir($handle); 

            if ($i > 0) {
                asort($array);
                while (list ($key, $val) = each ($array)) {
                    $expl = explode(".",$val);
                    include "engine/accounts/$val";
                    $val = substr($val,0,strlen($file)-4);
                        print "<tr><td width=280 valign=top><font 
            face=verdana size=1 color=999999><b>$val</b> <font color=red>($siege
             Siege)</td><td width=200 valign=top><div align=right><a 
            href=\"index.php?a=superstar&wname=$val\"><font face=verdana size=1 
            color=999999><b>[Profil anzeigen]</A></td></tr>";
                }
            } else {
                print "Sorry, kein File mit der Extenstion $extension gefunden.";
            }
            ?>

            Kommentar


            • #7
              Geh' am Besten mal logisch Schritt für Schritt vor. Füge Zeilen ein, die Dir ausgeben, welchen Wert die einzelnenen Variablen zu einem bestimmten Zeitpunkt haben. Dies geht mit simplen echo-Befhlen oder im Fall von $array recht eingach mit var_dump($array).

              Dann schaust Du Dir an, was alles im Array landet und wie Dein Array nach der Sortierung aussieht. Das ist eine Debugging-Methode mit der man den meisten Fehlern auf die Schliche kommt.

              Noch ein paar Sachen zum Programmierstil:


              PHP-Code:
              while (false !== ($file readdir ($handle))) { 
              entspricht

              PHP-Code:
              while($file readdir($handle)) { 
              Was passiert in Deinem Skript bei den Einträgen "." und "..", die es in (fast) jedem Verzeichnis gibt?


              PHP-Code:
              $i $i 1
              entspricht

              PHP-Code:
              $i++; 
              Eine Abfrage, ob es Probleme beim Öffnen eines Verzeichnisses gibt, ist auch niemals falsch:

              PHP-Code:
              if ($handle opendir("$meinVerzeichnis")){ /* mit dem handle arbeiten */ } else { die("kann verzeichnis nicht öffnen"); } 
              Nach dem Explode hast Du eigentlich schon beide Bestandteile des Filenamens, da musst Du nicht nochmal mit substr hantieren.

              Also, vielleicht hilft irgendetwas davon schon mal weiter. Zumindest um den Code etwas leserlicher/einfacher zu machen.
              Happiness is an empty error log

              Kommentar


              • #8
                Array sortieren

                Ich mags nochmal versuchen, wirklich helfen konnt mir keiner..

                folgendes:


                array wird hier sortiert:

                PHP-Code:
                    include "engine/accounts/$file.txt";
                                
                $files[$erfahrung] = $file;
                                
                sort($files); 
                Ausgabe erfolgt mit:

                PHP-Code:
                 foreach ($files as $file
                                    {
                                        
                                        include 
                "engine/accounts/$file.txt";
                                           echo 
                "<tr><td width=280 valign=top><font face=verdana size=1 
                color=999999><b>
                $file</b> <font color=red>($erfahrung)</td><td 
                width=200 valign=top><div align=right><a href=\"index.php?
                a=superstar&wname=
                $file\"><font face=verdana size=1 
                color=999999><b>[Profil anzeigen]</A></td></tr>"
                ;     } 

                so, alle werte sind gesetzt, Ausgabe ist aber folgende:
                ( 1. Wert ist $file zweiter wert ist $erfahrung)
                Aragom (3.3275) [Profil anzeigen]
                Aragorn (3.7935) [Profil anzeigen]
                Archi (6.275) [Profil anzeigen]
                Arinity (0.66) [Profil anzeigen]
                Arnold (0.50) [Profil anzeigen]
                Arschpirat (3.9925) [Profil anzeigen]


                warum sortiert er mir das nich nach dem wert erfahrung sondern nach dem namen?

                was hab ich übersehen?



















                Vollständiger Code:



                PHP-Code:
                                            <?php
                 
                $n
                =0;
                if (
                $start 1)
                {
                $start="0";
                }
                else
                {
                $start="$start";
                }
                $stop=$start+20;
                $mp3files opendir('engine/accounts'); 
                while (
                $file readdir($mp3files))
                {
                    if (
                $file != "." && $file != ".."
                    {
                          if (
                $start>$n++) 
                           { continue; }
                       
                              if (
                strtolower(substr($file, -4)) == ".txt")
                            {   
                                
                $file substr($file,0,strlen($file)-4);
                                
                $key$file;
                            include 
                "engine/accounts/$file.txt";
                                
                $files[$erfahrung] = $file;
                                
                sort($files);
                                
                               }
                     }
                    
                 }    

                 foreach (
                $files as $file
                                    {
                                        
                                        include 
                "engine/accounts/$file.txt";
                                           echo 
                "<tr><td 
                width=280 valign=top><font face=verdana size=1 
                color=999999><b>
                $file</b> <font color=red>($erfahrung)</td><td 
                width=200 valign=top><div align=right><a href=\"index.php?
                a=superstar&wname=
                $file\"><font face=verdana size=1 
                color=999999><b>[Profil anzeigen]</A></td></tr>"
                ;     } 

                                         
                $n++;
                                        if (
                $n==$stop)
                                        { break; }
                                                
                 
                closedir($mp3files);
                     
                ?>

                Kommentar


                • #9
                  poste mal ne auszugsweise array-struktur

                  und guck mal, was zu sort() im manual steht.
                  EDIT:
                  es spricht auch nichts dagegen, deinen alten thread fortzsetzen...

                  Kommentar


                  • #10
                    Original geschrieben von TobiaZ
                    poste mal ne auszugsweise array-struktur

                    wie meinen?


                    Original geschrieben von TobiaZ

                    und guck mal, was zu sort() im manual steht.
                    ja da hab ich schon geschaut, mit asort etc geht trotzdem nich.. er sortiert IMMER so..

                    Kommentar


                    • #11
                      na, den inhalt von deinem Array!

                      Kommentar


                      • #12
                        Original geschrieben von TobiaZ
                        es spricht auch nichts dagegen, deinen alten thread fortzsetzen...
                        eben ... -> *zusammenführ*
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          oha grad post geschrieben da war der thread weg

                          also


                          PHP-Code:
                          include "engine/accounts/$file.txt";
                                          
                          $files[$erfahrung] = $file;
                                          
                          asort($files); 
                          der wert $erfahrung wird aus der $file.txt gezogen.

                          die werte gehen von 0.50005 bis 16.00005

                          also sind die arrays quasi

                          name1abc[3.2324]
                          name2abc[4.3242]

                          etc

                          Kommentar


                          • #14
                            TobiaZ proudly presents....






                            print_r()





                            Und jetzt bitte.

                            Kommentar


                            • #15
                              Original geschrieben von nicker
                              ja da hab ich schon geschaut, mit asort etc geht trotzdem nich.. er sortiert IMMER so..
                              Mir ist nicht ganz klar wie das Array aufgebaut ist und idr vermutlich auch nicht warum gibst du dir nicht mal die Array Struktur aus??????

                              Basics:
                              PHP-Code:
                              echo "<pre>";
                              print_r();
                              echo 
                              "</pre>"
                              Anhand dieses Ergebnis zieh deine weiteren Prüfungen durch, denke wie ein Debugger
                              [color=blue]MfG Payne_of_Death[/color]

                              [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
                              [color=red]Merke:[/color]
                              [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

                              Murphy`s Importanst LAWS
                              Jede Lösung bringt nur neue Probleme
                              Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
                              In jedem kleinen Problem steckt ein großes, das gern raus moechte.

                              Kommentar

                              Lädt...
                              X