繁体   English   中英

PHP以自定义顺序订购目录中的文件夹和文件

[英]PHP Order folders & files in directory in custom order

很抱歉以后的冗长帖子...

我已经搜索了几天以了解如何执行此操作,但似乎无法全神贯注于如何完成此操作。 我有一个包含十二个文件夹的目录,一年中的每个月一个文件夹(一月,二月等)。

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

对于当月(例如5月),也将有以下文件:May2013_calendar_2560x1440; May2013_calendar_1920x1200; 等等...

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

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

<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 />";
            }
        }
    }
} 
} 

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

您可以只在所需目录中列出文件,然后可以使用usort

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM