2011-03-19 26 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>'; 
?>