0

私のサーバーには、「april2009」から「march2013」までのファイル名を持つ一連のファイルがあり、その間の毎月のファイルがあります(さらに、今から毎月の新しいファイルが追加されます)。

「filemtime」を使って順番に並べてみたのですが、ところどころ変更されているようでランダムな順番になってしまいました。

ファイル名を並べ替えて、最新のものから順番に並べ替えるにはどうすればよいですか?

(phpでファイル名を取得しますが、この目的にはjqueryまたはmixを使用できます)

ありがとう

4

2 に答える 2

1

strtotime日付変換には素晴らしいです。

ファイルリストを取得したら、次のことができます。

$date = strtotime('april2003');

これはあなたに与えるでしょう: 1049155200. つまり:

2003 年 1 月 4 日 2:00:00

タイムスタンプを取得したら、並べ替えたいことを何でも実行できます。

POC は次のとおりです。

$dirs = array();
if ($handle = opendir('/path/to/dir')) {
    while (false !== ($entry = readdir($handle))) {
        if ($entry != "." && $entry != ".." && is_dir($entry)) {
            $dirs[strtotime(substr($entry, 0, -5))] = $entry;
        }
    }
    closedir($handle);
}

krsort($dirs);
于 2013-03-11T12:44:54.537 に答える
0

控えめに言って、これはファイルの命名規則を思い付く前に考えるべきでした。コメントで指摘されているように、唯一の賢明な命名規則は、ソート可能なyyyy-mmまたはyyyy-mm-ddです。

この場合、唯一のオプションは次のとおりです。

  1. ファイル名のリストをロードします
  2. それらをロードしながら、名前をソート可能な形式に変換します(したがって、2003年4月を200304に変換します)
  3. それらをロードするときに、$ img [$ sortablefilename] = $ realファイル名の形式の配列に配置します(例:$ img ['200304'] ='april2003';)
  4. ksortを使用して、結果の配列を並べ替えます
  5. 実際のファイル名を使用してソートされた配列を読み取り、画像を表示します
于 2013-03-11T13:01:39.180 に答える