好吧,我概述了我正在/正在工作的网站。而对于每个网站我都有一个php文件。在那个php文件中,我使用这段代码来获取文件的最新和最旧日期,注意目录中的图片。
$date = "test/*.*";
$files = array_filter(glob($date), function($file) {
$ext = substr($file, strrpos($file, '.'));
return !in_array($ext, array('.jpg', '.bit', '.png', '.jpeg', '.gif', '.bmp'));
});
$latest = count($files)-1 ;
array_multisort(
array_map( 'filemtime', $files ),
SORT_NUMERIC,
SORT_ASC,
$files
);
$newestfile = date ("d F Y ", filemtime($files[0]));
$oldestfile = date ("d F Y ", filemtime($files[$latest]));
if($newestfile == $oldestfile) {
echo date ("d F Y ", filemtime($files[0]));
} else {
echo date ("d F Y ", filemtime($files[0]));
echo " - " ;
echo date ("d F Y .", filemtime($files[$latest]));
}
此代码的输出将如下:2013年1月16日至2013年10月25日。
在我的概述页面中,我使用代码将所有php文件(我制作的网站)包含在该页面中。 (顺便说一句,php文件不是大页面。只是带有图片和一些文字。)
$listy = glob("sites/*.php");
print_r ($listy) ;
array_multisort(
array_map( 'filemtime', $listy ),
SORT_NUMERIC,
SORT_DESC,
$listy
);
if (empty($listy)) {
include('includes/emptycontent.php');
} else {
foreach ($listy as $filename) {
include $filename;
}
}
这个数组的输出如下:
Array (
[0] => sites/test.php
[1] => sites/test2.php
[2] => sites/test3.php
到目前为止很好,没有问题。
现在,我想对包含的文件进行排序,而不是像我在上面的代码中所做的那样。但我希望它在目录中的文件的最新日期排序,如在php文件中。所以实际上我想将这些代码与一个代码相结合。 所以我有一个名为test的php文件。我希望目录中最新文件的日期也称为test。那些名字总是一样的。
我认为使用第二个代码的输出然后摆脱“sites /”和“.php”。我认为这些名字必须是一个数组。然后为每个名称获取最新文件并从最新到最旧排序。
我认为这样我最近在顶部工作的网站和页面底部的旧网站。 也许我的方法完全错了,但我不知道如何在代码中做到这一点。
答案 0 :(得分:0)
看看这一点:
array_map( 'filemtime', $listy ),
在这里,您可以有效地将文件列表转换为修改日期列表。如何将其转换为另一个功能。在目录中找到最新文件的人:
array_map(function ($filename) {
// $filename = sites/test1.php
$dir = substr($filename, strlen("sites/"), - strlen(".php")); // cut those!
// or:
$dir = basename($filename, '.php');
// put the code listing files inside $dir
// then sort it (you did it in the first part)
// and then `return` the most or the least recent one
}, $listy),
HTH。