0
<div style="width: 49%; height: 300px; float: left; padding-top: 10px; ">

<h2><img src="downloads/general.png"></h2>

    <h1>General Downloads</h1>
    <?php
    $Dirdownloads = opendir('downloads/general');
while (false !== ($file = readdir($Dirdownloads))) {
    if ($file != "." && $file != "..") {
        $files[] = array(
            filemtime('downloads/general/'.$file),
            $file
        );
    }
}
closedir($Dirdownloads);
usort($files, create_function('$a, $b', 'return $a[0] - $b[0];'));
foreach ($files as $file) {
    echo '<a href="downloads/general/'.$file[1].'">'.$file[1].'</a><br />';
}
 ?>
 </div>

<div style="width: 49%; height: 300px; float: right; padding-top: 10px; ">

<h2><img src="downloads/conference.jpg"></h2>

    <h1>Conference Information</h1>
 <?php
    $Dirdownloads = opendir('downloads/conference');
while (false !== ($file = readdir($Dirdownloads))) {
    if ($file != "." && $file != "..") {
        $files[] = array(
            filemtime('downloads/conference/'.$file),
            $file
        );
    }
}
closedir($Dirdownloads);
usort($files, create_function('$a, $b', 'return $a[0] - $b[0];'));
foreach ($files as $file) {
    echo '<a href="downloads/conference/'.$file[1].'">'.$file[1].'</a><br />';
}
 ?>
 </div>

<div style="width: 49%; height: 300px; float: left; padding-top: 10px; ">

<h2><img src="downloads/newsletter.jpg"></h2>

    <h1>Newsletters</h1>
 <?php
    $Dirdownloads=opendir('downloads/newsletters');
    while (false !== ($file = readdir($Dirdownloads))) {
    if($file != "." && $file != ".."){
        echo '<a href="downloads/newsletters/'.$file.'">'.$file.'</a><br />';
    }
    }
    closedir($Dirdownloads);
 ?>
 </div>

<div style="width: 49%; height: 300px; float: right; padding-top: 10px; ">

<h2><img src="downloads/calendar.png"></h2> 

<h1>Calendar</h1>
 <?php
    $Dirdownloads=opendir('downloads/calendars');
    while (false !== ($file = readdir($Dirdownloads))) {
    if($file != "." && $file != ".."){
        echo '<a href="downloads/calendars/'.$file.'">'.$file.'</a><br />';
    }
    }
    closedir($Dirdownloads);
 ?>
 </div>

特定のフォルダー内のすべてのファイルを表示し、それらをダウンロードできるようにするコードです。名前順に並んでいるので、新しい順に並べたいのですが… 助けて?

4

4 に答える 4

1

見てください:http://us2.php.net/manual/en/function.filemtime.php

基本的に、次のように 2D 配列を構成します。

配列:

[0]ファイル [0]時間

[1]ファイル [1]時間

[2]ファイル [2]時間

...

同様に、filemtime() を使用して返される時刻は UNIX 形式です。したがって、リストを「時間」でソートするループを簡単に作成できます

于 2009-09-19T19:52:54.960 に答える
1

配列内のファイルを収集し、作成日で並べ替えてから印刷します。

$dir = 'downloads/general';
$Dirdownloads = opendir($dir);
while (false !== ($file = readdir($Dirdownloads))) {
    if ($file != "." && $file != "..") {
        $files[] = array(
            filectime($dir.'/'.$file),
            $file
        );
    }
}
closedir($Dirdownloads);

// sort files by creation time
usort($files, create_function('$a, $b', 'return $a[0] - $b[0];'));

// print the files
foreach ($files as $file) {
    echo '<a href="'.$dir.'/'.$file[1].'">'.$file[1].'</a><br />';
}

編集    そのアルゴリズムを複数回使用したい場合、関数が役立つ場合があります。

function getFilesByCreationDate($dir) {
    $dir = rtrim($dir, '/');
    $handler = opendir($dir);
    while (false !== ($file = readdir($handler))) {
        if ($file != "." && $file != "..") {
            $files[] = array(
                filectime($dir.'/'.$file),
                $file
            );
        }
    }
    closedir($handler);
    usort($files, create_function('$a, $b', 'return $a[0] - $b[0];'));
    foreach ($files as &$file) {
        $file = $file[1];
    }
    return $files;
}

次に、その関数を次のように使用します。

$dir = 'downloads/general';
$files = getFilesByCreationDate($dir);
foreach ($files as $file) {
    echo '<a href="'.$dir.'/'.$file.'">'.$file.'</a><br />';
}
于 2009-09-19T19:57:25.240 に答える
0

ファイルのリストが実際に配列に読み込むことができるほど小さい場合は、それらをその配列に読み込み、それらを susortするカスタム比較関数を使用して、filemtimeどのファイルが新しいかを判断します。

への引数usortは、配列自体、および配列の 2 つの要素を引数として受け取る関数を指定するコールバックであり、最初の引数が 2 番目の引数より小さい場合は負を返し、等しい場合は 0 を返し、最初の引数が等しい場合は正を返します。より大きいです。

于 2009-09-19T19:55:13.537 に答える
0

次のことを行う必要があります。

  • 最初に、各ファイルの最終更新日を含むファイルのリストを取得します (これは を使用して取得できますfilemtime)
  • 次に、配列にある「日付」フィールドに応じて並べ替えるユーザー関数を使用して、そのリストを並べ替えます (ユーザー定義関数を使用して並べ替えるには、を参照してくださいusort) 。
  • 最後に、リストを表示します

たとえば、最初にファイルのリストを取得するには:

$files = array();

$dir = dirname(__FILE__);
$Dirdownloads=opendir($dir);
while (false !== ($file = readdir($Dirdownloads))) {
    if($file != "." && $file != ".."){
        $files[] = array(
            'name' => $file,
            'date' => filemtime($dir . '/' . $file),
        );
    }
}
closedir($Dirdownloads);

ファイルごとに、" name" と " "を含む配列があることに注意してくださいdate

そして、それらをソートするには:

usort($files, 'my_sort_function');

dateそして、「 」フィールドに基づいてファイルを比較するソート機能:

function my_sort_function($a, $b) {
    if ($a['date'] == $b['date']) {
        return 0;
    }
    return ($a['date'] > $b['date']) ? -1 : 1;
}

これにより、$file配列には必要なものが含まれているはずです:-) 必要な
順序に応じて、ソート関数で>またはを使用します。<

そのリストを繰り返し処理して、リンクを表示するのはあなた次第です!

于 2009-09-19T19:56:28.323 に答える