0

好吧,我有一个我曾经/正在工作的网站的概述。对于每个站点,我都有一个 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]));
}

此代码的输出如下: 16 January 2013 - 25 October 2013 。

在我的概览页面中,我使用代码将所有 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 的 php 文件。我想要目录中最新文件的日期,也称为测试。那些总是同一个名字。

我的想法是使用第二个代码的输出,然后摆脱“sites/”和“.php”。我认为这些名字必须在一个数组中。然后为每个名称获取最新文件并将它们从最新到最旧排序。

我认为这样我可以将我最近工作的网站放在页面顶部,将旧网站放在页面底部。也许我的方法是完全错误的,但我不知道如何在代码中做到这一点。

4

1 回答 1

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。

于 2013-10-30T20:56:04.743 回答