2016-11-02 4 views
1

Теперь мне нужно отобразить массив изображений из каталога в добавленном порядке даты (теперь он показывает файлы по имени). Функция не была написана мной, так как я не понимаю PHP. Я попробовал несколько решений здесь, но, не зная синтаксиса, не мог многое сделать.Сортировка файлов по дате добавлено Laravel PHP

Итак, как отсортировать файлы здесь?

public function getPhotos($nav, $page=false) 
{ 
    if($page==false){ 
     $dir = 'img/'.$nav; 
    } 
    else{ 
     $dir = 'img/'.$nav.'/'.$page;   
    } 
    $files = FILE::allFiles($dir); 
    foreach($files as $file){ 
     if(pathinfo($file, PATHINFO_EXTENSION)=='png' or pathinfo($file, PATHINFO_EXTENSION)=='gif' or pathinfo($file, PATHINFO_EXTENSION)=='jpg'){ 
      $result[] = (string)explode("$page\\",$file)[1]; 
     } 
    } 
    echo $json_response = json_encode($result); 
} 
+0

Взгляните на http://stackoverflow.com/questions/2667065/sort-files-by-date-in-php –

ответ

3

Что-то вроде этого следует сделать трюк:

public function getPhotos($nav, $page = false) 
{ 
    $dir = 'img/' . $nav; 

    if ($page !== false) { 
     $dir .= '/' . $page; 
    } 

    return $files = collect(File::allFiles($dir)) 
     ->filter(function ($file) { 
      return in_array($file->getExtension(), ['png', 'gif', 'jpg']); 
     }) 
     ->sortBy(function ($file) { 
      return $file->getCTime(); 
     }) 
     ->map(function ($file) { 
      return $file->getBaseName(); 
     }); 

} 

Надеется, что это помогает!

+0

Большое спасибо, это сработало! И как применить сортировку DESC? –

+0

@JohnDoe Измените 'sortBy' на' sortByDesc'. Вы можете найти дополнительную информацию о коллекциях здесь: https://laravel.com/docs/master/collections#available-methods –

+0

Как и ожидалось. Благодарю. –

Смежные вопросы