ordnerinhalte sortieren

scorpio-php

Mitglied
stehe damit im moment vor einem für mich etwas komplizierteren problem..

und zwar lass ich mit hilfe einer schleife und einem array ordnerinhalte auslesen und via echo im script ausgeben. das ergibt dann eine schöne geordnete liste, allerdings absteigend - und ich wills genau andersrum!

hier erstmal der code:

PHP:
<?php 

    $dir = "."; 
    $handle = opendir($dir); 

    while (false !== ($file = readdir($handle))) 
    { 
        if ($file != 'list.php' AND 'counter.txt') 
        {
            $array = file($file);
            if( $array[0] )
                echo "<a href=\"../thread.php?threadid=$array[0]\">".$array[2]."</a>".$array[3]."<br>";
        }
    }

    closedir($handle);

?>

gibt es evtl. eine möglichkeit, dass das ganze nach $array[3] sortiert wird, aber die grundfunktion erhalten bleibt? ich denke mit sort() oder ähnlichem komme ich da nicht hin, oder?:rolleyes:
das ganze soll für eine spätere forenansicht dienen.. man kann sich also vielleicht vorstellen auf welche art von sortierung ich hinaus will ^^

edit: achja $array[3] ist bei mir die variable fürs datum und danach will ichs letztendlich auch geordnet haben
 
Zuletzt bearbeitet:
nach datum...
nur kann ich das ja nicht in die whileschleife packen. das muss glaub ich wenn überhaupt irgendwie außenrum oder? und ob das dann ..:rolleyes:
 
Da mir auf die Schnelle nichts anders einfällt würde ich das Zeilenarray $array in ein weiteres schreiben. Somit habe ich ein 2D array, welches ich mit der folgenden Funktion, die ich den Userkommentaren der Funktionslektüre von PHP ungetestet entnommen habe probieren

PHP:
<?php
// $arr = array to sort.
// $col = column to sort by.
function incision_sort($arr, $col){
       for($k = 0; $k < sizeof($arr)-1; $k++){
           // $arr[$k+1] is possibly in the wrong place. Take it out.
           $t = $arr[$k+1];
           $i = $k;   
          
           // Push $arr[i] to the right until we find the right place for $t.
           while($i >= 0 && $arr[$i][$col] > $t[$col]){
               $arr[$i+1] = $arr[$i];
               $i--;
           }
          
           // Insert $t into the right place.
           $arr[$i+1] = $t;                           
       }// End sort
       return $arr;       
   }

?>

und für das erstellen des 2D arrays
PHP:
<?php

    $dir = ".";
    $handle = opendir($dir);
    $all = array();

    while (false !== ($file = readdir($handle)))
    {
        if ($file != 'list.php' AND 'counter.txt')
        {
            $array = file($file);
            if( $array[0] )
                 $all[] = $array;
        }
    }

    closedir($handle);

?>

Danahc das neue $all sortieren und mit ner schleife durhclaufen und ausgeben
 
den oberen code check ich ja überhauptnicht ^^#

naja aber wenn jetzt $all[] = $array, und ich darüber einen sort() laufen lasse, woher weiss der dann, dass ich nach $array[3] sortieren will?

sorry dass ich grad nix check :rolleyes:
 
keine Ahnung, dafür ist ja incision sort. Angeschat hab ich sie mir auchn icht, nur da darauf keine negativen Kommentare kamen muss sie wohl funktionieren...try & error.
Der Aufruf wäre dann wohl

PHP:
$all = incision_sort($all,3);
 
Schreibfehler, Funktion nicht definiert irgendwas in der Art, aber das sollte kein Problem sein... hat ja hier auch kein Prob gewesen.
 
Zurück