0

很抱歉接下来的冗长帖子......

我已经搜索了几天如何做到这一点,但我似乎无法解决如何完成这个问题。我有一个目录,里面有十二个文件夹,一年中的每个月都有一个(一月,二月等......)

在每个文件夹中,我都有一定数量的图像文件,桌面背景。每个文件都根据它所属的月份、月份的年份、是否有日历以及分辨率大小来命名。例如,Jan 文件夹将包含具有命名约定的文件:January2013_nocal_2560x1440;2012 年 1 月_nocal_2560x1440;ETC...

对于当前月份,例如 5 月,还会有名为:May2013_calendar_2560x1440 的文件;May2013_calendar_1920x1200;ETC...

我想做的是创建一个文件夹列表,按照一年中每个月的顺序,从当前月份开始并及时向后工作。在每个月下,我想列出该文件夹中正确年份的文件。

这是我想要的输出。当月:

<a class="menuitem" href="">May 2013</a>
<ul class="list2" style="float:left">Without Calendar:
    <li><a href="May/May2013_nocal_2560x1440.jpg">2560 x 1440</a></li>
    <li><a href="May/May2013_nocal_1920x1200.jpg">1920 x 1200</a></li>
    etc...
</ul>
<ul class="list2" style="float:right">With Calendar:
    <li><a href="May/May2013_calendar_2560x1440.jpg">2560 x 1440</a></li>
    <li><a href="May/May2013_calendar_1920x1200.jpg">1920 x 1200</a></li>
    etc...
</ul>

对于接下来的每个月:

<a class="menuitem" href="">April 2013</a>
<ul class="list2" style="float:left">Without Calendar:
    <li><a href="April/April2013_nocal_2560x1440.jpg">2560 x 1440</a></li>
    etc...
</ul>
<a class="menuitem" href="">March 2013</a>
<ul class="list2" style="float:left">Without Calendar:
    <li><a href="March/March2013_nocal_2560x1440.jpg">2560 x 1440</a></li>
    etc...
</ul>
<a class="menuitem" href="">February 2013</a>
<ul class="list2" style="float:left">Without Calendar:
    <li><a href="February/February2013_nocal_2560x1440.jpg">2560 x 1440</a></li>
    etc...
</ul>
<a class="menuitem" href="">January 2013</a>
<ul class="list2" style="float:left">Without Calendar:
    <li><a href="January/January2013_nocal_2560x1440.jpg">2560 x 1440</a></li>
    etc...
</ul>
<a class="menuitem" href="">December 2012</a>
<ul class="list2" style="float:left">Without Calendar:
    <li><a href="December/December2012_nocal_2560x1440.jpg">2560 x 1440</a></li>
    etc...
</ul>
<a class="menuitem" href="">November 2012</a>
<ul class="list2" style="float:left">Without Calendar:
    <li><a href="November/November2012_nocal_2560x1440.jpg">2560 x 1440</a></li>
    etc...
</ul>

etc...

我希望它按日历顺序遍历每个文件夹,并在 2013 年回显文件夹中的每个文件,然后在 2012 年再次遍历所有文件夹,依此类推。

我已经研究了scandirblobexplode其他资源来读取/列出每个文件夹和文件,但无法弄清楚如何按我想要的方式订购所有东西。

任何有关如何做到这一点的建议将不胜感激。

编辑:过去几天我一直在寻找无济于事。我很感激我到目前为止收到的所有回复,但他们似乎都没有真正做我想做的事情。到目前为止,这是我的基本代码,它提取了我想要排序和循环的所有文件夹/文件。

$root = $_SERVER['DOCUMENT_ROOT']."/wallpapers/";

$folders = scandir($root);

foreach ($folders as $folder) {
if(is_dir($root . "/" . $folder) && $folder != "." && $folder != ".." && $folder !=    "images") {
    $months = array($folder);
    foreach ($months as &$month) {
        $files = scandir($root . $month);
        foreach ($files as $file) {
            if(is_file($root . $month . "/" . $file)) {
                echo $month . "/" . $file . "<br />";
            }
        }
    }
} 
} 

我只是不确定从这里去哪里。

4

2 回答 2

1

你可以只列出你想要的目录中的文件,然后你就可以使用usort

于 2013-05-02T18:28:14.463 回答
0

这可能是一个可以帮助您入门的示例:http ://www.weberdev.com/get_example.php3?ExampleID=4959 您可能需要获取数据然后对其进行排序以进行显示。

或查看:递归浏览所有服务器目录并使用 php 列出最新创建的文件

于 2013-05-02T18:28:04.380 回答