2017-07-04 13 views
0

イメージギャラリーを作成していて、アップロードした最新のイメージが前面に表示されます。最後に変更したディレクトリや画像ファイルから画像ファイルを取得する方法は?

$files = glob("images/*.*"); 
for ($i=0; $i<count($files); $i++) { 
    $image = $files[$i]; 
    $supported_file = array('gif','jpg','jpeg','png'); 

    $ext = strtolower(pathinfo($image, PATHINFO_EXTENSION)); 
    if (in_array($ext, $supported_file)) { 
     echo basename($image)."<br />"; // show only image name if you want to show full path then use this code // echo $image."<br />"; 
     echo '<img src="'.$image .'" alt="Random image" />'."<br /><br />"; 
    } else { 
     continue; 
    } 
} 

しかし、私はそれが最後にアップロードされた順に表示させる方法がわからないんだけど:

これは私が現在持っているものです。

+0

おそらくファイルイテレータに基づいて、まったく異なる解決策が必要になります。 symfony finderコンポーネントを使用しています。symfony finderコンポーネントには、すでに多数のソートが組み込まれています。https://symfony.com/doc/current/components/finder.html – gview

+0

既に2つのソートメソッドが組み込まれています:sortByChangedTime ()とsortByModifiedTime() – gview

+0

はhttp://php.net/manual/en/function.filemtime.phpを使って要素の配列を作成します。ここでkeyはfilenameで、valueは再フォーマットされたタイムスタンプです。それから 'rsort()'あなたのために働く? – mickmackusa

答えて

2
$files = glob("*.{jpg,jpeg,png,gif,JPG,JPEG,PNG,GIF}",GLOB_BRACE); 
$sorted_files=array(); /* a new array that have modification time as values 
and files as keys the purpose is to sort files according to the values in reverse order */ 
foreach ($files as $file) 
{ 
    $sorted_files[$file]=filemtime($file); 
} 
arsort($sorted_files); 
foreach ($sorted_files as $image=>$mtime) 
{   
    echo basename($image)."<br />"; // show only image name if you want to show full path then use this code // echo $image."<br />"; 
    echo '<img src="'.$image .'" alt="Random image" />'."<br /><br />"; 
} 
+0

はい、私は、datetime式を整数として比較するので再フォーマットする必要はありません、はい私は値としてキーとして同意する、私はこれを編集します – user10089632

関連する問題