2011-03-19 88 views
0

我使用这个按照它们添加到目录的顺序返回图像,但是我希望它们从最新到更旧。我该怎么做?由于如何以与readdir相反的顺序制作PHP显示文件?

<? 
$handle = @opendir("images"); 

if(!empty($handle)) { 
    while(false !== ($file = readdir($handle))) { 
    if(is_file("images/" . $file)) 
     echo '<img src="images/' . $file . '"><br><br>'; 
    } 
} 

closedir($handle); 
?> 

回答

1

如果你想他们从最新到更老的顺序排列,那么你不能只依赖readdir。该顺序可能是任意的。您需要按时间戳排序:

$files = glob("images/*"); // or opendir+readdir loop 

$files = array_combine($files, array_map("filemtime", $files)); 
arsort($files);    // sorts by time 

$files = array_keys($files); // just leave filenames 
0

我认为最简单的方法是阅读您的文件到一个数组,扭转它和输出反向排列:

<?php 

$handle = @opendir("images"); 

if(!empty($handle)) 
{ 
    $files = array(); 
    while(false !== ($file = readdir($handle))) 
    { 
     if(is_file("images/" . $file)) 
      $files[] = $file; 
    } 

    foreach(array_reverse($files) as $file) { 
     echo '<img src="images/' . $file . '"><br><br>'; 
    } 
} 

closedir($handle); 

?> 
0

像这样:

<? 
$handle = @opendir("images"); 

$files = array(); 
if(!empty($handle)) { 
    while(false !== ($file = readdir($handle))) { 
    if(is_file("images/" . $file)) 
     $files[] = $file; 
    } 
} 

closedir($handle); 

// flip the array over 
$files = array_reverse($files); 

// display on screen 
foreach ($files as $file) 
    echo '<img src="images/' . $file . '"><br><br>'; 
?>