How do I display folders in date of creation order?

前端 未结 3 494
说谎
说谎 2021-01-22 12:41

I am new to PHP and developing a project called BaboonHut.com, I am coding it in PHP as the best way to learn is by just diving in. Anyway to the question, the snippet of code b

相关标签:
3条回答
  • 2021-01-22 13:18

    You can't beat DirectoryIterator.

    $files = array();
    $dir = new DirectoryIterator('.');
    foreach ($dir as $fileinfo) {
       // Add only directories into a associative array, that key is it `MTime`
       if($fileinfo->isDir()){
           $files[$fileinfo->getMTime()] = $fileinfo->getFilename();
       }
    }
    
    // Then, key sort it.
    ksort($files);
    
    0 讨论(0)
  • 2021-01-22 13:31

    This will grab a list of files from a directory put them into an array then sort the array by date.

    <?php
    $dir = 'resources/';
    $files = [];
    
    foreach(glob($dir.'*', GLOB_ONLYDIR) as $resdir) {
        $files[] = [
            "name" => $resdir,
            "time" => filectime($resdir)
        ];
    }
    
    // Sort files by date
    usort($files, function($a, $b){
        return $b["time"] - $a["time"];
    });
    
    foreach($files as $resdir) {
        $resdir = str_replace($dir, '', $resdir);
        echo <<<HTML
        <div class="span3">
        <div class="tile">
        <img src="resources/$resdir/thumbnail.png" class="img-rounded">
        <h3 class="tile-title">$resdir</h3>
        <p>
    HTML;
        readfile('resources/'. $resdir .'/description.txt'); 
        echo <<<HTML
        </p>
        <a class="btn btn-primary btn-large btn-block" href="http://www.baboonhut.com/resources/$resdir/">More Information</a>
        </div>
        </div>
    HTML;
    }
    
    0 讨论(0)
  • 2021-01-22 13:34

    Using Creation Date

    $files = glob(__DIR__ . '/*', GLOB_ONLYDIR);
    
    // Using Creation Date
    usort($files, function ($a, $b) {
        return filetime($a) - filetime($b);
    });
    
    foreach($files as $file) {
        printf("%s : %s\n", date("r", fileatime($file)), $file);
    }
    
    function filetime($file) {
        return PHP_OS == "win" ? fileatime($file) : filectime($file);
    }
    

    Using Modification Date

    $files = glob(__DIR__ . '/*', GLOB_ONLYDIR);
    
    // Using Modification Date
    usort($files, function ($a, $b) {
        return filemtime($a) - filemtime($b);
    });
    
    foreach($files as $file) {
        printf("%s : %s\n", date("r", fileatime($file)), $file);
    }
    

    Note : Using $a - $b in descending other but if you want descending please use $b - $a

    0 讨论(0)
提交回复
热议问题