PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Sortieren von RecursiveDirectoryIterator? (http://www.selfphp.de/forum/showthread.php?t=26105)

UwBe Inter 16.02.2018 01:03:18

Sortieren von RecursiveDirectoryIterator?
 
Hallo Zusammen

Ich lasse auf meiner Webseite aktuell vorhandene Verzeichnisse auflisten. Diese können angeklickt werden und danach wird der Inhalt aufgelistet (Bilder und Videos) mit Vorschau etc.

Eine einzelne Funktion dabei ist die Auflistung aller Archiv-Ordnern, die nach Datum benannt sind. Beispiel, wie es aktuell ausgegeben wird:

Code:

2018-02-14
2017-08-01
2018-02-17
2013-01-28
2018-01-27
2017-09-12

(Jahr-Monat-Tag)

Ich versuche schon länger verzweifelt die Funktion so zu erweitern, dass die Ausgabe nacht diesen Ordnern sortiert wird. Zuerst nach dem Jahr, danach Monat und Tag. Dies in Absteigender Form. Das obige Beispiel sollte also so aussehen:

Code:

2018-02-17
2018-02-14
2018-01-28
2018-01-27
2017-09-12
2013-01-28

Hoffe es ist verständlich ausgedrückt, ansonsten einfach Fragen. Anbei der Code um den es geht:

PHP-Code:

function directoryScan($dir) { 
    if (isset(
$dir) && is_readable($dir)) { 
        
$directionList = Array(); 
         
        
$dir realpath($dir); 
         
            
//$objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir,FilesystemIterator::SKIP_DOTS), RecursiveIteratorIterator::SELF_FIRST); 
        
$objects = new RecursiveDirectoryIterator($dirFilesystemIterator::SKIP_DOTS);
        
$x 0
        foreach(
$objects as $entry){     
            
$getpath str_replace($dir''$entry); 
            
$size ceil($entry->getSize()/1024); 
            
$changed date($entry->getMTime()); 
            
//Den Slash bei Anfang entfernen
        
$getpath substr($getpath1);
       
//Verzeichnis definieren für die Weiterverarbeitung
      
$listdir $dir.'/'.$getpath;
    
//Ausgabe
       
echo '<a href="archiv.php?opt=list_dir_img&imgdir='.$getpath.'" target="_self">'.$getpath.'</a><br/>';
        
$x ++; 
        } 
         
        
//return 0; 
    



Das Problem liegt allerdings daran dass $getpath zwar alles schön auflistet aber nicht sortiert. Die Ausgabe sollte nach Jahr, Monat und Tag sortiert sein.

Derzeit finde ich keinen Denkanstoss was mir weiterhelfen könnte. asort, arsort, sort, uksort, uasort schon alles probiert auch mit umwandlung von $getpath in ein Array, danach iwas mit uksort($getpath, 'strnatcmp')...

Weiss jemand von Euch vielleicht eine Lösung?

Gruss
Dominic

vt1816 16.02.2018 12:13:31

AW: Sortieren von RecursiveDirectoryIterator?
 
Hallo und willkommwen hier im Forum.


Kleine Anpassungen nötig:
PHP-Code:

function directoryScan($dir) { 
    if (isset(
$dir) && is_readable($dir)) { 
        
$directionList = Array();          
        
$dir realpath($dir); 
         
        
$objects = new RecursiveDirectoryIterator($dirFilesystemIterator::SKIP_DOTS);
        
$x 0

        foreach(
$objects as $entry){     
            
$getpath str_replace($dir''$entry); 
            
$size ceil($entry->getSize()/1024); 
            
$changed date($entry->getMTime()); 
            
//Den Slash bei Anfang entfernen
            
$getpath substr($getpath1);
            
$directionList[] = $getpath;
            
//Verzeichnis definieren für die Weiterverarbeitung
            
$listdir $dir.'/'.$getpath;
            
//Ausgabe
            //echo '<a href="archiv.php?opt=list_dir_img&imgdir='.$getpath.'" target="_self">'.$getpath.'</a><br/>';
            
$x ++; 
        } 
        
asort($directionList);
        foreach(
$directionList as $path) {
            echo 
'<a href="archiv.php?opt=list_dir_img&imgdir='.$path.'" target="_self">'.$path.'</a><br/>';
        }
    } 



UwBe Inter 16.02.2018 14:27:19

AW: Sortieren von RecursiveDirectoryIterator?
 
Hallo vt186

Vielen Dank für den Ansatz.
Irgendwie war ich so lange dran dass ich komplett Vergass. Ich sehe auch erst jetzt dass ich bereits $directionList = Array(); zwar bereits vordefiniert aber nirgends eingesetzt/verwendet hab.

Deine Anpassungen war bereist meine Denkweise, hatte aber irendwo eine Blockade drin. Die zweite foreach-Schleife liess ich bisher aus.

Danke Dir für den Ansatz.
Werde auf diese Basis nun weiterfahren mit der Programmierung.

Gruss
Dominic

vt1816 16.02.2018 14:30:44

AW: Sortieren von RecursiveDirectoryIterator?
 
Dominic,

wenn noch Fragen oder Problem, dann weißt Du ja jetzt wo Du Hilfe bekommst.

UwBe Inter 16.02.2018 14:32:08

AW: Sortieren von RecursiveDirectoryIterator?
 
Ja, natürlich. :)

Bevor ich frage versuche ich erst alles selber, lese mehrmals im Manual nach, schliesse Fehler anhand von Debugging aus und erst wenn es dann nicht mehr geht komm ich ins Forum.

Daher nicht wundern wenn es wenig Beiträge von mir gibt, ausser natürlich Antworten von mir um zu Helfen.


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:04:07 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.