Заказать этот массив по дате изменения? - PullRequest
2 голосов
/ 31 октября 2011

У меня есть php-файл, который создает массив всего в моем каталоге пользователей, затем массив отправляется обратно на iPhone.

Массив, который создает мой php, упорядочивает их по алфавиту, яхочу отсортировать по дате создания файла ..

Вот как выглядит мой php-файл

<?php
$username = $_GET['username'];
$path = "$username/default/";


$files = glob("{$path}/{*.jpg,*.jpeg,*.png}", GLOB_BRACE);

// output to json
echo json_encode($files);

?>

Как мне это сделать?

Спасибо:) * +1010 *

Ответы [ 2 ]

5 голосов
/ 31 октября 2011

Использование usort() с обратным вызовом, который вызывает filemtime() ...

Это не проверено, но я верю, что он установит правильный путь ...

// First define a comparison function to be used as a callback
function filetime_callback($a, $b)
{
  if (filemtime($a) === filemtime($b)) return 0;
  return filemtime($a) < filemtime($b) ? -1 : 1; 
}

// Then sort with usort()
usort($files, "filetime_callback");

Это должно отсортировать их по возрасту.Если вы хотите, чтобы они были самыми новыми сначала, измените < на > в ответной реакции return троичная операция.

0 голосов
/ 19 мая 2017

Как отметил Майкл Берковски, использование usort() - это путь, но если это одноразовая сортировка (т. Е. Вам нужно сортировать массив таким образом один раз в коде), вы можете использовать анонимную функцию :

usort($files, function ($a, $b){
    if (filemtime($a) === filemtime($b)) return 0;
    return filemtime($a) < filemtime($b) ? -1 : 1; 
});

Хотя это и не нужно, он сохраняет вызов функции.

Если вам нужно сортировать файлы таким образом более одного раза, создание отдельной именованной функции является предпочтительным.

...