如何按日期排序文件

时间:2017-10-10 10:12:53

标签: php

我有这个代码来显示文件夹中的图像。所以任何人都知道如何添加函数来按日期将所有图像排序到我的代码中。 我已经测试过像krsort($ file)这样的东西;或者asort($ file); 但我不知道把它放在哪里使它工作。任何帮助都会很棒。谢谢。

<?php
$directory = $words[$lang]["folder_link"];
$allowed_types=array('jpg','jpeg','gif','png','JPG');
$file_parts=array();
$ext='';
$title='';
$i=0;

$dir_handle = @opendir($directory) or die("There is an error with your image directory!");

while ($file = readdir($dir_handle)) 
{
if($file=='.' || $file == '..') continue;

$file_parts = explode('.',$file);
$ext = strtolower(array_pop($file_parts));

$title = implode('.',$file_parts);
$title = htmlspecialchars($title);

$nomargin='';

if(in_array($ext,$allowed_types))
{
    if(($i+1)%4==0) $nomargin='nomargin';

    echo '
    <div class="pic '.$nomargin.'" style="background:url('.$directory.'/'.$file.') no-repeat 50% 50%;">
    <a href="'.$directory.'/'.$file.'" title="'.$title.'" target="_blank">'.$title.'</a>
    </div>';

    $i++;

}
}

closedir($dir_handle);

?>

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

首先使用filemtime作为密钥将文件存储到新数组中。然后使用kso​​rt对结果进行排序。

<?php
$directory = $words[$lang]["folder_link"];
$allowed_types=array('jpg','jpeg','gif','png','JPG');
$file_parts=array();
$ext='';
$title='';
$i=0;

$dir_handle = @opendir($directory) or die("There is an error with your image directory!");
$fileset = [] ;
while ($file = readdir($dir_handle)) {
    if ($file == '.' || $file == '..')
        continue;

    $file_parts = explode('.', $file);
    $ext = strtolower(array_pop($file_parts));

    $title = implode('.', $file_parts);
    $title = htmlspecialchars($title);

    $nomargin = '';

    if (in_array($ext, $allowed_types)) {

        $fileset[] = ['time' => filemtime($file) , 'file' => $file ] ;
    }
}
closedir($dir_handle);

usort($fileset, function ($item1, $item2) {
    return $item1['time'] <=> $item2['time'];
    // $item1['file']  //do file comparison if necessary
//    return $item2['time'] <=> $item1['time']; //ascending
});


foreach( $fileset as $a ) {
    $file = $a['file'] ;    
        if (($i + 1) % 4 == 0)
            $nomargin = 'nomargin';

        echo '
    <div class="pic ' . $nomargin . '" style="background:url(' . $directory . '/' . $file . ') no-repeat 50% 50%;">
    <a href="' . $directory . '/' . $file . '" title="' . $title . '" target="_blank">' . $title . '</a>
    </div>';

        $i++;
}

?>