2

我是 PHP 新手,正在开发一个名为 BaboonHut.com 的项目,我正在用 PHP 对其进行编码,因为最好的学习方法就是深入研究。无论如何,对于这个问题,下面的代码片段当前获取了所有文件夹的名称在某个位置并显示一些信息,但是这些项目当前按字母顺序显示,我希望它们按文件夹创建的顺序显示。SimpleHost 应该在 Code-Game-Sleep http://www.baboonhut.com/resources/前面,在此先感谢。

<?php
$dir = 'resources/';

foreach(glob($dir.'*', GLOB_ONLYDIR) as $resdir) {
    $resdir = str_replace($dir, '', $resdir);
    echo "
<div class=\"span3\">
<div class=\"tile\">
<img src=\"resources/". $resdir ."/thumbnail.png\" class=\"img-rounded\">
<h3 class=\"tile-title\">". $resdir ."</h3>
<p>"; echo  include('resources/'. $resdir .'/description.txt'); echo "</p>
<a class=\"btn btn-primary btn-large btn-block\" href=\"http://www.baboonhut.com/resources/" . $resdir ."/\">More Information</a>
</div>
</div>
"
;
}
?>
4

3 回答 3

2

这将从目录中获取文件列表,将它们放入数组中,然后按日期对数组进行排序。

<?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;
}
于 2013-05-31T20:24:11.333 回答
1

你打不过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);
于 2013-05-31T20:28:31.183 回答
0

使用创建日期

$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);
}

使用修改日期

$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);
}

注意:在其他降序中使用$a - $b,但如果你想降序请使用$b - $a

于 2013-05-31T20:28:24.977 回答