1

以下のアクションを使用して、ファイルのリストを収集して表示します。最終変更日でファイルを並べ替えることができる必要があります。PHPまたはZENDを使用して、最終変更順にアイテムを並べ替える簡単な方法はありますか?ZENDを使用してファイルを取得し、注文する簡単な方法を知っている場合。私にお知らせください。

public function imagesAction()
{
    $this->_helper->layout->disableLayout();

    $results = array();

    $handler = opendir(APPLICATION_PATH . '/../public/images/blog');

    while ($file = readdir($handler)) {
        if ($file != "." && $file != ".." && $file != '.svn') {
            $results[] = $file;
        }
    }

    closedir($handler);

    $this->view->data = $results;
}

やってみました

$this->view->data = ksort($results);
$this->view->data = asort($results);

ただし、ファイルのリスト全体をビューから削除するだけで、表示されなくなります。

4

3 に答える 3

2
public function imagesAction()
{
    $this->_helper->layout->disableLayout();

    $results = array();

    $handler = opendir(APPLICATION_PATH . '/../public/images/blog');

    while ($file = readdir($handler)) {
        if ($file != "." && $file != ".." && $file != '.svn') {
            $results[] = array('file' => $file, 'time' => filemtime($file));
        }
    }

    closedir($handler);

    uasort($results, function($file1, $file2) {
        if ( $file1['time'] == $file2['time'] )
           return 0;
        return $file1['time'] < $file2['time'] ? -1 : 1;
    });

    $this->view->data = $results;
}
于 2012-11-26T20:52:02.623 に答える
0

DirectoryIterator ( http://php.net/manual/en/class.directoryiterator.php ) を使用して、ディレクトリ内のファイルを簡単に反復処理し、それぞれのプロパティ (最終変更時刻を含む) を取得できます。

イテレータを単純にインスタンス化し、それを反復処理して、項目を選択した配列に並べ替えることができます。

于 2012-11-26T20:52:16.087 に答える
0

最終更新日をキーとして使用します。

while ($file = readdir($handler)) {
    if ($file != "." && $file != ".." && $file != '.svn') {
        $s = stat($file);
        if (!is_array($results[$s['mtime']]) {
             $results[$s['mtime']] = array();
        }
        $results[$s['mtime']][] = $file;
    }
}

次にksort、キーでソートするために使用します。

ksort($results);

のすべてのアイテムは$results、同時に変更されるファイル名の配列を保持するようになりました。

于 2012-11-26T20:51:07.693 に答える