0

以下、長文失礼します。。。

これを行う方法について数日間検索しましたが、これを行う方法に頭を悩ませているようには見えません。1 年の各月 (1 月、2 月など...) に 1 つずつ、合計 12 のフォルダーを含むディレクトリがあります。

各フォルダー内には、一定数の画像ファイル、デスクトップの背景があります。各ファイルには、所属する月、その月の年、カレンダーの有無、および解像度サイズに従って名前が付けられます。たとえば、Jan フォルダーには次の命名規則のファイルがあります。January2012_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 年のすべてのフォルダーを再びループします。

scandirblob、およびその他のリソースを調査して、explode各フォルダーとファイルを読み取り/一覧表示しましたが、すべてを希望どおりに並べ替える方法がわかりません。

これを行う方法についてのアドバイスは大歓迎です。

編集:私は過去数日間無駄に検索してきました. これまでに受け取ったすべての反応に感謝していますが、どれも私がやりたいことを実際に行っているようには見えません. これまでの基本コードは、並べ替えてループしたいすべてのフォルダー/ファイルを取得します。

$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 に答える